javascript - Typecript no puede encontrar la ventana de nombre o documento
typescript typescript2.0 (2)
Para cualquier caso:
document.getElementById(''body'');
// or
window.document.getElementById(''body'');
Me sale el
error TS2304: Cannot find name ''window''.
¿Me falta algo en
tsconfig.json
para un archivo de definición que debo instalar?
Recibo el mensaje cuando
vscode
tsc
y en
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"
]
}
Mi respuesta: para usar con
tsconfig.json
a
es5
y uso
lib: ["es2015", "dom"]
Parece que el problema está causado por apuntar a
ES2016
.
¿Estás apuntando a eso por una razón?
Si apunta a
es6
el error probablemente desaparecerá.
Otra opción es especificar las bibliotecas para que las use el compilador:
tsc -t ES2016 --lib "ES2016","DOM" ./your_file.ts
Lo que también debería hacer que el error desaparezca.
No estoy seguro de por qué las bibliotecas no se usan de forma predeterminada, en los
documentos para las opciones del compilador
se indica para la opción
--lib
:
Nota: Si no se especifica --lib, se inyecta una biblioteca predeterminada. La biblioteca predeterminada inyectada es:
► Para --target ES5: DOM, ES5, ScriptHost
► Para --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
Pero no indica cuáles son las bibliotecas predeterminadas cuando se dirigen a
ES2016
.
Puede ser un error, intente abrir un problema, si lo hace, comparta el enlace aquí.
utilizar
"lib": ["dom"]
en tsconfig.json
p.ej
{
"compilerOptions": {
"lib": ["es5", "es6", "dom"],
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"jsx": "react"
},
"include": ["./src/**/*"]
}