我有以下简单的构造函数:
constructor() {
const myTextAlign: CanvasTextAlign = 'center';
const myHTMLDoc: HTMLDocument = null;
console.log(myTextAlign);
}
VS Code报告该代码没有问题,如果我单击CanvasTextAlign
或HTMLDocument
并按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
时创建的原始版本
答案 0 :(得分:1)
您必须告诉角度,哪个是您想要的CanvasTextAlign。
在控制器ts文件顶部使用类似这样的内容:
import {CanvasTextAlign} from 'mylibrary';
并确保此库位于您的node_modules
目录中。
HTMLDocument
不需要这样的导入,它本身是angular的一部分。