|
|
|
|
|
by kuramitropolis
1351 days ago
|
|
Okay... $ echo "export class Foo { a = 1 }" > test.mjs
$ npx ts-node
> import('./test.mjs').then(console.log)
error TS7016: Could not find a declaration file for module './test.mjs'. '/home/user/Lab/test.mjs' implicitly has an 'any' type.
$ npx ts-node -O '{"allowJs":true}'
> import('./test.mjs').then(console.log)
Promise { <pending > }
Error [ERR_REQUIRE_ESM]: require() of ES Module /home/user/Lab/test.mjs not supported.
$ echo "module.exports.Foo = class Foo { a = 1 }" > test.cjs
$ npx ts-node -O '{"allowJs":true}'
> const { Foo } = require('./test.cjs')
> Foo
[class Foo]
> new Foo
Foo { a = 1 }
> function bar (foo: Foo) {}
TS2749: 'Foo' refers to a value, but is being used as a type here. Did you mean 'typeof Foo'?
No I did not, TypeScript, and that's about as much as it seems to interoperate. I guess in some cases practical migration might be viable - but as for the general case, the out-of-the-box experience seems to speak otherwise.It's not even viable to write in JS and manually write a DTS - no way to check em against each other. Except idk library in JS, test suite in TS anyway. So not a lot of lateral movement possible in practice. |
|
Try this: