我正在检查 Deno,发现其中一个入门示例非常优雅:
import { serve } from "https://deno.land/x/std@v0.2.10/http/server.ts";
const s = serve("0.0.0.0:8000");
void async function main() {
for await (const req of s) {
req.respond({ body: new TextEncoder().encode("Hello World\n") });
}
}()
我正在使用 VS Code 编写 Deno 脚本,但我不确定如何让编辑器知道导入函数的类型,例如
serve
.我认为 Deno 支持 IDE 可能为时过早,但如果有解决方案或变通方法,我想知道它。我需要安装
@types
包或类似的东西? import
或 reference
一些.d.ts
声明文件?使用 serve
时如何让 VS Code 提供代码完成建议和显示类型注释本示例中的函数以及 Deno 中的任何导入脚本?
最佳答案
tldr
安装 denoland.vscode-deno
扩展 1. 然后 enable特定项目中的 Deno,例如<proj-root>/.vscode/settings.json
:
{
"deno.enable": true, // enables extension
"deno.lint": true, // inline deno lint diagnostics, requires `deno.unstable`
"deno.unstable": true // also provides unstable type declarations in VS Code
}
以 v2.3.0 开头,您也可以使用 deno: Init
向导 2:要集成 TS 工作区版本而不是 VS Code 内置版本,请查看 linked docs .
1 This one已弃用。
2 注意:在一个新的空项目中,至少需要存在一个源文件,向导才能正常工作。
更多细节
扩展有什么作用?
.ts
VS Code 中的扩展 "https://deno.land/std@0.56.0/http/server.ts"
Deno.writeFile
)如何解析
.ts
的类型模块通过上述扩展,VS Code 允许
.ts
导入的文件扩展名并将 URL 导入解析为 local disk cache .编译器可以使用这些缓存的类型定义进行检查。最后,获取所有源并重新启动 TS 服务器/重新加载 VS 代码:deno cache https://deno.land/std/http/server.ts # fetch and compile from URL
# or main project file
deno cache <your main file>.ts # fetches all its dependencies
server.ts
是 Standard Library 的一部分, 这只是一个更严格维护的远程 .ts
集合模块,所以它也将被正确输入。如何解析
.js
的类型模块Deno 提供 additional ways引用
.d.ts
.js
的文件文件。在导入代码位置指定类型定义:
// @deno-types="./foo.d.ts"
import * as foo from "./foo.js";
在主机代码位置指定类型定义:/// <reference types="./foo.d.ts" />
export const foo = "foo";
替代方案:Deno 可以读取自定义 X-TypeScript-Types
来自远程导入的 HTTP header 。如何使用自定义
tsconfig.json
给定的 tsconfig.json
项目中的文件与 Deno 默认配置合并,例如:{
"compilerOptions": {
// set a custom, deviant value
"noImplicitAny": false // deno default is true
// (this is just an example - use strong types, whenever possible)
}
}
包括 -c
选项,因此 VS Code 和 Deno CLI 具有相同的编译器设置:deno run -c ./tsconfig.json main.ts
使用方法 --unstable
类型最简单的选项是设置
"deno.unstable": true
( PR ) 在 settings.json
并重启 VS Code,查看 tldr
部分。手动替代
cd <your-project>
deno types --unstable > deno.runtime.d.ts
touch tsconfig.json # (1); jsconfig.json for JS projects also possible
VS 代码 automatically includes deno.runtime.d.ts
与现有的 tsconfig.json
(1)。重大变化
vscode-deno
v1.26.0扩展名必须是 explicitly enabled通过
"deno.enable": true
在 .vscode/settings.json
项目的(默认为 false
)。以前,默认值为 true
.vscode-deno
< 1.25.0在每种情况下(稳定和不稳定)都安装 Deno 类型 - 请参阅
"How to use --unstable types"
.
关于typescript - 如何在 Deno 中提取类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54794933/