deno 里如何使用 ts 里与 web 有关的类型定义,例如 Document, HTMLElement 等

已经尝试过的方法:

  • 添加 tsconfig.json -> lib: [“es6”, “dom”] :x:
  • 找第三方有关包,未找到 :x:

试试

{
  "compilerOptions": {
    "lib": [
      "dom",
      "deno.ns",
      "deno.unstable"
    ]
  }
}

这个好像在 1.5.1 版本修复了

我对 ts 配置的经验不太多。请问修改 tsconfig.json 后需要进行什么更新操作吗;如果不用任何操作,那为什么 deno 可以直接获取到 lib 里的类型定义,原理是啥

修改后报如下错误,直接 deno run 也会报错:

使用 deno run -c tsconfig.json

我上面说的 deno run 其实指的就是 deno run -c tsconfig.json xxxx,还是会报错 xxxx is not defined

如果可以的话,麻烦整一个小例子 :blush:

xxxx is not defined 这个 xxxx 应该指的是变量,这个没法解决。

如果是使用了 web 类型,但是这个类型不存在,错误应该是 Cannot find name 'Xxxxx'

你可以把你的代码例子和完整的错误信息贴出来。

代码以及错误截图:

或者可以用

/// <reference lib="dom" />

好处就是不用 ts.config.json(我偏向deno尽量不用ts.config.json, 不确定未来deno会不会抛弃tsc,完成拥抱swc,swc说是未来会支持type-check),不过需要手动引入。

1赞

感谢,完美解决~

怎么解决的?

其实没解决,直接引入后存在和 deno 原生类型重复定义的错误。现在也还没解决 :no_mouth:

(当时引入后,发现 vscode 可以敲入相关 dom 类型,就初步认为问题解决了。后来有空尝试运行后,发现报上述错误)