首页 文章

@ types / react找不到名字'HTMLDialogElement'

提问于
浏览
10

我遇到了一个奇怪的构建问题与typescript和 @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

文件 typescript/foo.ts 是我用来重现问题的最小文件,故意短:

function printNumber(n: number) {
    console.log(n);
}

let x = 3;
x *= 4;
printNumber(x);

请注意 foo.ts 没有任何参考可以做出任何反应 . 最奇怪的是当我卸载 @types/react 时,错误消息消失了 .

这是怎么回事?

EDIT :我发现this issue在tsc版本> 2.3.2时显示 . 我将tsc降级到版本2.3.2,但问题仍然存在 .

3 回答

  • 9

    尽管我理解了typescript的策略,但这与您使用的版本有关 . 当typescript 2.3.2出来时,HTMLDialogElement的定义未包含在 @types/react 中,因此您会看到此错误 . 您可以在this github issue中阅读更多相关信息 .

    也许,即使您没有在 foo.ts 上包含React,typescript编译器也会包含并检查您获得的所有定义,甚至是node_modules中的定义 . 这将解释为什么即使不包含React也会出现此错误 .

    现在我想到了,我没有事件包括我写的定义 - 但它们被转换器使用了 .

    我昨天最近克隆的一个项目遇到了同样的问题;我通过将typescript更新为^ 2.7.0来修复它 .

  • 0

    我有同样的问题 . 尝试了这里提到的所有升级和降级 . 但是,没有什么对我有用 . 终于在node_modules/@types/react/index.d.ts中从第3782行和第3508行注释出“对话框”,这只是一个快速修复 .

  • 0

    我遇到了同样的问题(最新的create-react-app,打字稿版本为2.5.3),在我弹出应用程序(npm run eject)并手动更新打字稿到package.json中的当前版本到当前版本2.7.2再次 .

    似乎是一些非常奇怪的错误(在Windows上)导致我的大学(相同的安装)没有这个错误 . 在搜索时,你会发现它每2个月出现一次,所以我猜,不仅是这个问题(https://github.com/Microsoft/TypeScript/issues/16880)杜马指出,导致我们正在开发的项目在12月的某个地方开始 .

相关问题