tsc --out 在我的文件中使用 'import' 时出现奇怪的行为

tsc --out weird behavior when using 'import' in my files

我有两个打字稿文件,app.ts 和“angular2.d.ts”(其中包含 angular2 的类型定义)

我的 tsconfig.json 文件如下所示:

{
"compilerOptions": {
    "module": "commonjs",
    "out": "public/all.js",
    "sourceMap": true,
    "watch": true,
    "target": "ES5"
},
"files": [
    "typings/angular2/angular2.d.ts",
    "src/app.ts"   
]}

预期结果 - public/all.js 将包含已编译的 ts 文件。

实际结果 - src/app.js 文件已创建,其中包含已编译的 ts 文件。 public/all.js 也被创建,但它只包含以下行: //# sourceMappingURL=all.js.map(即只有源映射,没有实际代码)

进一步调查时,有问题的行是: import {Component, View, bootstrap} from 'angular2/angular2';src/app.ts 中。一旦我删除该行,一切都会正确编译。一旦我把它放回去 - 它会导致上述问题。

我做错了什么?

传入文件

tsc app.ts --out all.js

设置"out":"public/all.js""module":"commonjs"是互斥的。您应该:

  1. 使用内部模块并让编译器为您连接输出文件(从配置中删除 module 设置);
    @basarat would advise 你反对,但我觉得还不错,尤其是小项目。
  2. 使用外部模块并使用其他工具连接输出文件(设置 "outDir":"public/" 并从配置中删除 out 设置)。

commonjs 模块适用于 Node.jsamd 模块适用于 require.js。如果你在做前端开发,最好使用 amd 或内部模块。