构建时找不到来自lib.dom.d.ts的类型

时间:2018-11-12 12:39:23

标签: angular typescript typescript-typings

我有以下简单的构造函数:

constructor() {
    const myTextAlign: CanvasTextAlign = 'center';
    const myHTMLDoc: HTMLDocument = null;
    console.log(myTextAlign);
}

VS Code报告该代码没有问题,如果我单击CanvasTextAlignHTMLDocument并按F12键,它将正确地带我到lib.dom.d.ts。但是,当我尝试运行ng build时,Angular编译器会引发以下错误:

error TS2304: Cannot find name 'CanvasTextAlign'.

它从未报告关于HTMLDocument的错误,因此似乎可以在lib.dom.d.ts中找到一些定义,但不是全部。

tsconfig.json看起来像这样:

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

tsconfig.app.json看起来像这样:

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

两个json文件都是运行ng new时创建的原始版本

1 个答案:

答案 0 :(得分:1)

您必须告诉角度,哪个是您想要的CanvasTextAlign。

在控制器ts文件顶部使用类似这样的内容:

import {CanvasTextAlign} from 'mylibrary';

并确保此库位于您的node_modules目录中。

另一方面,

HTMLDocument不需要这样的导入,它本身是angular的一部分。