我在项目中有一个假设的Typescript文件(简化的例子)。
Utils.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:
And from @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
和react-scripts-ts
作为我的React应用程序的样板。Webpack堆栈内置的非常固执己见,必须从哪里获取源代码,编译后的源代码必须是es5。如果尝试缩小任何es6特性,压缩器/混淆包将会崩溃。我知道我可以运行npm run-script eject
并修改各种配置脚本,但我试图避免这个混乱。我希望能够将源代码编译为es6,而不搞乱他们的webpack堆栈。