Sunday, May 12, 2024
 Popular · Latest · Hot · Upcoming
79
rated 0 times [  83] [ 4]  / answers: 1 / hits: 81452  / 8 Years ago, mon, december 26, 2016, 12:00:00

For either case:



document.getElementById('body');
// or
window.document.getElementById('body');


I get error TS2304: Cannot find name 'window'.



Am I missing something in tsconfig.json for a definition file I should install?



I get the message when running tsc and in 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
]
}


My Answer:
For use with tsconfig.json I target es5 and use lib: [es2015, dom]


More From » typescript

 Answers
174

It seems that the problem is caused by targeting ES2016.

Are you targeting that for a reason? If you target es6 the error will probably go away.



Another option is to specify the libraries for the compiler to use:



tsc -t ES2016 --lib ES2016,DOM ./your_file.ts


Which should also make the error go away.



I'm not sure why the libs aren't used by default, in the docs for compiler options it states for the --lib option:




Note: If --lib is not specified a default library is injected. The
default library injected is:

► For --target ES5: DOM,ES5,ScriptHost

► For --target ES6: DOM,ES6,DOM.Iterable,ScriptHost




But it doesn't state what are the default libraries when targeting ES2016.

It might be a bug, try to open an issue, if you do please share the link here.


[#59559] Friday, December 23, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
aliah

Total Points: 118
Total Questions: 132
Total Answers: 94

Location: Tajikistan
Member since Fri, Sep 11, 2020
4 Years ago
;