Dan*_*ats 10 javascript typescript reactjs
我遇到了一个奇怪的构建问题与打字稿和@types/react.我有两个打字稿配置文件:一个用于使用react的文件,另一个用于不使用的文件.当构建我的项目中没有使用反应的部分时,我看到以下错误:
node_modules/@types/react/index.d.ts(3508,58):错误TS2304:找不到名称'HTMLDialogElement'.node_modules/@types/react/index.d.ts(3508,78):错误TS2304:找不到名称'HTMLDialogElement'.node_modules/@types/react/index.d.ts(3782,72):错误TS2304:找不到名称'HTMLDialogElement'.node_modules/@types/react/index.d.ts(3782,92):错误TS2304:找不到名称'HTMLDialogElement'.
我能用最小的例子重现错误:
node_modules/typescript/bin/tsc typescript/foo.ts --outDir static/js/src --module none
Run Code Online (Sandbox Code Playgroud)
该文件typescript/foo.ts是我用来重现问题的最小文件,故意短:
function printNumber(n: number) {
console.log(n);
}
let x = 3;
x *= 4;
printNumber(x);
Run Code Online (Sandbox Code Playgroud)
请注意,foo.ts没有任何参考作出任何反应.最奇怪的是,当我卸载时@types/react,错误消息消失了.
这是怎么回事?
编辑:我发现这个问题在tsc版本> 2.3.2时出现.我将tsc降级到版本2.3.2,但问题仍然存在.
尽管我理解了typescript的策略,但这与您使用的版本有关.当typescript 2.3.2出来时,HTMLDialogElement的定义未包括在内@types/react,因此您会看到此错误.您可以在此github问题中阅读有关此内容的更多信息.
也许,即使你没有在你的React中包含React foo.ts,typescript编译器也会包含并检查你得到的所有定义,甚至是node_modules中的定义.这将解释为什么即使不包含React也会出现此错误.
现在我想到了,我没有事件包括我写的定义 - 但它们被转换器使用了.
我昨天最近克隆的一个项目遇到了同样的问题; 我通过将typescript更新为^ 2.7.0来修复它.
| 归档时间: |
|
| 查看次数: |
2409 次 |
| 最近记录: |