无论哪种情况:
document.getElementById('body');
// or
window.document.getElementById('body');
我得到error TS2304: Cannot find name 'window'.
我在tsconfig.json
中遗漏了一些我应该安装的定义文件吗?
我在运行tsc
和vscode
时收到消息
tsconfig.json:
{
"compilerOptions": {
"allowJs": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"jsx": "react",
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": true,
"noImplicitAny": false,
"sourceMap": true,
"suppressImplicitAnyIndexErrors": true,
"target": "ES2016",
"typeRoots": [
"node_modules/@types/",
"typings/index.d.ts"
]
},
"exclude": [
"node_modules",
"**/*-aot.ts"
]
}
我的答案:与tsconfig.json
一起使用我瞄准es5
并使用lib: ["es2015", "dom"]
似乎问题是由针对ES2016
引起的。
您是出于某种原因定位的吗?如果您定位es6
,错误可能会消失。
另一种选择是指定编译器使用的库:
tsc -t ES2016 --lib "ES2016","DOM" ./your_file.ts
这也应该使错误消失。
我不确定为什么默认情况下没有使用libs,在docs for compiler options中它为--lib
选项声明:
注意:如果未指定--lib,则会注入默认库。注入的默认库是: ►对于--target ES5:DOM,ES5,ScriptHost ►对于--target ES6:DOM,ES6,DOM.Iterable,ScriptHost
但它没有说明在定位ES2016
时默认库是什么。
它可能是一个错误,尝试打开一个问题,如果你这样做,请在这里分享链接。
使用
"lib": ["dom"]
在tsconfig.json中
EG
{
"compilerOptions": {
"lib": ["es5", "es6", "dom"],
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"jsx": "react"
},
"include": ["./src/**/*"]
}