Pour les deux cas:
document.getElementById('body');
// or
window.document.getElementById('body');
Je reçois error TS2304: Cannot find name 'window'.
Est-ce que je manque quelque chose dans tsconfig.json
pour un fichier de définition à installer?
Je reçois le message lorsque je lance tsc
et dans 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"
]
}
Ma réponse: à utiliser avec tsconfig.json
Je cible es5
et utilise lib: ["es2015", "dom"]
Il semble que le problème soit dû au ciblage ES2016
.
Ciblez-vous cela pour une raison? Si vous ciblez es6
l'erreur va probablement disparaître.
Une autre option consiste à spécifier les bibliothèques à utiliser par le compilateur:
tsc -t ES2016 --lib "ES2016","DOM" ./your_file.ts
Ce qui devrait aussi faire disparaître l'erreur.
Je ne suis pas sûr de savoir pourquoi les bibliothèques ne sont pas utilisées par défaut, dans le docs pour les options du compilateur il est indiqué pour le --lib
option:
Remarque: Si --lib n'est pas spécifié, une bibliothèque par défaut est injectée. La bibliothèque par défaut injectée est:
► Pour --target ES5: DOM, ES5, ScriptHost
► Pour --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
Mais il n’indique pas quelles sont les bibliothèques par défaut lorsqu’on cible ES2016
.
Cela pourrait être un bogue, essayez d’ouvrir un problème. Si vous le faites, veuillez partager le lien ici.
utilisation
"lib": ["dom"]
dans tsconfig.json
par exemple.
{
"compilerOptions": {
"lib": ["es5", "es6", "dom"],
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"jsx": "react"
},
"include": ["./src/**/*"]
}