Ste*_*yer 56 javascript typescript typescript2.0
无论哪种情况:
document.getElementById('body');
// or
window.document.getElementById('body');
Run Code Online (Sandbox Code Playgroud)
我明白了 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"
]
}
Run Code Online (Sandbox Code Playgroud)
我的答案:用于tsconfig.json我的目标es5和使用lib: ["es2015", "dom"]
Nit*_*mer 67
似乎问题是由定位引起的ES2016.
您是出于某种原因定位的吗?如果你的目标es6错误可能会消失.
另一种选择是指定编译器使用的库:
tsc -t ES2016 --lib "ES2016","DOM" ./your_file.ts
Run Code Online (Sandbox Code Playgroud)
这也应该使错误消失.
我不确定为什么默认情况下不使用libs,在它为该选项声明的编译器选项的文档中--lib:
注意:如果未指定--lib,则会注入默认库.注入的默认库是: ►For--target
ES5:DOM,ES5,ScriptHost►For--
target ES6:DOM,ES6,DOM.Iterable,ScriptHost
但它没有说明定位时的默认库ES2016.
它可能是一个错误,尝试打开一个问题,如果你这样做,请在这里分享链接.
Dam*_*een 49
使用
"lib": ["dom"]
Run Code Online (Sandbox Code Playgroud)
在tsconfig.json中
例如
{
"compilerOptions": {
"lib": ["es5", "es6", "dom"],
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es6",
"moduleResolution": "node",
"jsx": "react"
},
"include": ["./src/**/*"]
}
Run Code Online (Sandbox Code Playgroud)
Ala*_*405 29
如果您使用的bun是而不是node,那么您需要使用bun add @types/web -D。
该问题的解释见https://github.com/oven-sh/bun/issues/3030
https://github.com/oven-sh/bun/issues/463#issuecomment-1636727109
注意:将类型引用添加到您的tsconfig.json,正如 GitHub 问题上所解释的那样,看起来不是强制性的。仅安装依赖项看起来足以消除错误。
Zik*_*oat 13
更新:为了避免将这些引用添加到每个文件,请参阅stackoverflow.com/a/77103144
我使用的是 Bun,并在相关 TypeScript 文件的顶部添加以下三斜杠指令解决了这个问题:
/// <reference lib="dom" />
/// <reference lib="dom.iterable" />
Run Code Online (Sandbox Code Playgroud)
这是因为设置"types": ["bun-types"]意味着 TypeScript 将忽略其他全局类型定义,包括lib: ["dom"].
这同样适用于其他全局类型定义库,例如 webworker。
请参阅bun 文档中的如何添加 DOM 类型以获取最新信息。
| 归档时间: |
|
| 查看次数: |
26523 次 |
| 最近记录: |