-
Notifications
You must be signed in to change notification settings - Fork 85
Open
Description
This is doc about typescript 4.4 breaking change:
https://devblogs.microsoft.com/typescript/announcing-typescript-4-4/#more-compliant-indirect-calls-for-imported-functions
for this code
import { timeouts} from 'retry'
console.log(timeouts({
retries: 5,
}))
typescript will compile it to
"use strict";
exports.__esModule = true;
var retry_1 = require("retry");
console.log((0, retry_1.timeouts)({
retries: 5
}));
note it is (0, retry_1.timeouts)(...)
and it will have different "this" context
and it will throw error:
**\node_modules\retry\lib\retry.js:34
timeouts.push(this.createTimeout(i, opts));
^
TypeError: this.createTimeout is not a function
at exports.timeouts (**\node_modules\retry\lib\retry.js:34:24)
at Object.<anonymous> (**\test-fail.js:7:34)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47
workaround is use import * as retry from 'retry' instead
jballanger, tedbyron, LeoniePhiline, GuiDevloper, destumme and 3 more
Metadata
Metadata
Assignees
Labels
No labels