扩展tsconfig时指定类型有什么意义?

时间:2018-06-19 14:27:22

标签: angular typescript tsconfig

我有一个使用@types和一些自定义键入的角度应用程序。由于某种原因,当我为该应用提供服务时,并且当我使用ng test运行测试时,无法找到自定义类型。我不明白为什么会这样,而且我不明白您应该如何管理扩展配置,或者为什么要在服务和测试之间使用不同的类型。

这是我自动生成的配置:

tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

tsconfig.app.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "allowSyntheticDefaultImports" : true,
    "outDir": "../out-tsc/app",
    "module": "es2015",
    "types": []
  },
  "exclude": [
    "src/test.ts",
    "**/*.spec.ts"
  ]
}

tsconfig.spec.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "module": "commonjs"
  },
  "files": [
    "test.ts",
    "polyfills.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ]
}

我尝试了许多不同的变体,但仍然不明白为什么它可以用于投放但不能用于测试。我知道不指定types数组意味着应该抓住所有类型吗?然而相反的说法似乎是正确的。

如果有人可以说一些话,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

错误不是由缺少类型引起的,而是由缺少类型的全局函数引起的。