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/**/*"]
}