我正在将JS文件迁移到Typescript,并且我的目标是能够在Vue中使用JS和Typescript类。我知道我可以将Vue脚本转换为Typescript,但现在我不想这样做。问题出现在component.vue文件中:
浏览器控制台中显示的错误是这样的(编译没有问题):
this.exceptionHandler = app.resolve('ExceptionHandler');
浏览器控制台中显示的错误是这样的(编译没有问题):
"TypeError: Cannot call a class as a function"
ExceptionHandler 是在 TypeScript 的 .ts 文件中定义的。
问题是:是否可以先将 TS 代码转译为 JS ES6,然后将代码放在一起,然后对所有内容运行 Babel 将其编译为 ES5?
我在 TS 配置中使用了这些选项:
"lib": ["es7", "es6", "es5", "dom"],
"types": ["reflect-metadata"],
"module": "commonjs",
"target": "es6",
以下是 Webpack 4 的配置:
{
test: /\.ts(x?)$/,
loader: 'babel-loader?presets[]=es2015!ts-loader',
exclude: [
"node_modules",
"vendor",
"app",
"public"
]
},
当我只使用ts-loader时,代码可以正常运行,但编译后的JS代码版本是ES6而不是ES5。
@babel/preset-env
替代已弃用的preset-es2015
。我还建议在混合环境中让 Babel 进行 TypeScript 编译。 - connexo