我的项目中有一个假设的 Typescript 文件(简化示例)。
实用程序.ts:
import * as HelperFromNodeModules from 'helper-from-node-modules';
class Utils {
static foo() {
return HelperFromNodeModules.parse(...);
}
}
导入helper-from-node-modules
包含一个 Javascript 文件。
helper-from-node-modules.js:
const dep = require('foo');
function parse(...) {
return bar.map((e) => {...});
}
从@types/helper-from-node-modules
index.d.ts:
export function parse(...);
其中tsconfig.json
包括以下内容:
{
...
"target": "es5",
"lib": ["es2015.collection","es6", "dom"],
"sourceMap": true,
"allowJs": true,
...
}
所以我的问题是 Typescript 编译器的输出文件是我编译的源代码加上所有体面的巨大串联。由于helper-from-node-modules
始终是一个.js文件,因此编译器似乎只是将其内容附加到输出文件中。因此,尽管"target": "es5"
输出文件仍然包含es6工件,例如const
和(e) => {...}
,导致后面的东西出现错误,这些东西严格要求 es5 javascript。
有没有办法告诉 Typescript 编译器/转译器也在javascript 依赖项上输出es5 ?
上下文如果你关心:
我犯了一个可怕的错误,使用react-create-app-typescript
andreact-scripts-ts
作为我的 React 应用程序的样板。内置的 webpack 堆栈对于源代码应该来自哪里以及编译后的源代码必须是es5非常固执己见。如果尝试缩小任何es6工件,打包的 minifier/uglifier 将崩溃。我知道我可以运行和修改各种配置脚本,但我试图避免这种混乱。我很想将源代码编译为es6而不会弄乱他们的 webpack 堆栈。npm run-script eject