いずれの場合も:
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
これによりエラーも解消されます。
コンパイラオプションのドキュメント で、ライブラリがデフォルトで使用されない理由がわかりません。--lib
オプションの場合:
注:--libが指定されていない場合、デフォルトのライブラリが挿入されます。挿入されるデフォルトのライブラリは次のとおりです。
►For --target ES5:DOM、ES5、ScriptHost
►--target ES6の場合:DOM、ES6、DOM.Iterable、ScriptHost
ただし、ES2016
を対象とする場合のデフォルトライブラリは何であるかは記載されていません。
。
つかいます
"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/**/*"]
}