Typcript не может найти имя окна или документа
Для обоих случаев:
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"]
Ответы
Ответ 1
Похоже, что проблема ES2016
с таргетингом на ES2016
.
Вы ориентируетесь на это по какой-то причине? Если вы es6
на es6
ошибка, вероятно, исчезнет.
Другой вариант - указать библиотеки для компилятора:
tsc -t ES2016 --lib "ES2016","DOM" ./your_file.ts
Который также должен сделать ошибку.
Я не уверен, почему libs не используются по умолчанию, в документах для параметров компилятора, которые он указывает для опции --lib
:
Примечание. Если --lib не указывается, будет добавлена библиотека по умолчанию. Введенная по умолчанию библиотека:
► Для --target ES5: DOM, ES5, ScriptHost
► Для --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
Но при настройке ES2016
он не указывает, какие библиотеки по умолчанию.
Это может быть ошибка, попробуйте открыть проблему, если вы, пожалуйста, поделитесь ссылкой здесь.
Ответ 2
использование
"lib": ["dom"]
в tsconfig.json
например
{
"compilerOptions": {
"lib": ["es5", "es6", "dom"],
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"jsx": "react"
},
"include": ["./src/**/*"]
}