对于任何一种情况:
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"]
答案 0 :(得分:62)
问题似乎是由定位ES2016
引起的
您是出于某种原因定位的吗?如果您定位es6
,则错误可能会消失。
另一种选择是指定编译器使用的库:
tsc -t ES2016 --lib "ES2016","DOM" ./your_file.ts
这也应该使错误消失。
我不确定为什么默认情况下不会使用这些库,而是--lib
它为ES2016
选项所说明的内容:
注意:如果未指定--lib,则会注入默认库。该 注入的默认库是:
►对于--target ES5:DOM,ES5,ScriptHost
►对于--target ES6:DOM,ES6,DOM.Iterable,ScriptHost
但是,在定位b
时,它没有说明默认库是什么
这可能是一个错误,尝试打开一个问题,如果你这样做,请在这里分享链接。
答案 1 :(得分:36)
使用
"lib": ["dom"]
tsconfig.json中的
e.g。
{
"compilerOptions": {
"lib": ["es5", "es6", "dom"],
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"jsx": "react"
},
"include": ["./src/**/*"]
}