如何在 Deno 中提取类型
How to pull typings in Deno
我正在查看 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
。我认为 IDE 支持 Deno 可能还为时过早,但如果有解决方案或解决方法,我想知道。
我需要安装 @types
包或类似的东西吗? import
或 reference
一些 .d.ts
声明文件?在此示例中使用 serve
函数以及在 Deno 中一般导入任何脚本时,如何让 VS Code 提供代码完成建议和显示类型注释?
更新:vscode-deno 运行良好。
以下是当前的解决方案:
- 将 https://github.com/kitsonk/deno_ls_plugin 添加到您的工作区。编辑您的
tsconfig.json
并将 http
和 https
导入的路径替换为远程依赖项的本地缓存位置(通常在 $HOME/.deno/deps/http
和 $HOME/.deno/deps/https
下)
- 创建一个
typings/
文件夹。 运行deno --types > typings/deno.d.ts
。 Deno 会为核心 API. 输出一个类型定义文件
- 现在的问题是 VS Code 在导入时不知道如何获取远程依赖项。为了解决这个问题,一旦您添加了一个新的远程
import
、运行 deno --prefetch your_file.ts
以拉下所有依赖项。为了使事情更简单,我建议将所有远程依赖项保存在一个文件 deps.ts
中(以及此文件中的 运行 --prefetch
)并重新导出内容,以便项目中的其他文件可以利用部门。
tldr
在特定项目中安装 denoland.vscode-deno
extension 1. Then 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, you can also use the deno: Init
向导 2 开始:
要集成 TS 工作区版本而不是 VS Code built-in,请查看 linked docs。
1 This one 已弃用。
2 注意:在一个新的空项目中,至少需要一个源文件存在,向导才能正常运行。
更多详情
扩展有什么作用?
- 允许在 VS Code 中显式
.ts
扩展
- 解决 URL 导入说明符,例如
"https://deno.land/std@0.56.0/http/server.ts"
- 集成 Deno 运行时类型(例如
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
模块的更严格维护的 collection,因此它也将被正确输入。
如何解析 .js
个模块的类型
Deno 提供 additional ways 为 .js
个文件引用 .d.ts
个文件。
在导入代码位置指定类型定义:
// @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
类型
最简单的选择是在 settings.json
中设置 "deno.unstable": true
(PR) 并重新启动 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 Code automatically includes deno.runtime.d.ts
存在 tsconfig.json
(1).
重大变更
vscode-deno
v1.26.0
项目的.vscode/settings.json
中的"deno.enable": true
扩展需要explicitly enabled(默认为false
)。之前,默认值是 true
.
vscode-deno
< 1.25.0
在每种情况下(稳定和不稳定)安装 Deno 类型 - 参见 "How to use --unstable types"
。
我正在查看 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
。我认为 IDE 支持 Deno 可能还为时过早,但如果有解决方案或解决方法,我想知道。
我需要安装 @types
包或类似的东西吗? import
或 reference
一些 .d.ts
声明文件?在此示例中使用 serve
函数以及在 Deno 中一般导入任何脚本时,如何让 VS Code 提供代码完成建议和显示类型注释?
更新:vscode-deno 运行良好。
以下是当前的解决方案:
- 将 https://github.com/kitsonk/deno_ls_plugin 添加到您的工作区。编辑您的
tsconfig.json
并将http
和https
导入的路径替换为远程依赖项的本地缓存位置(通常在$HOME/.deno/deps/http
和$HOME/.deno/deps/https
下) - 创建一个
typings/
文件夹。 运行deno --types > typings/deno.d.ts
。 Deno 会为核心 API. 输出一个类型定义文件
- 现在的问题是 VS Code 在导入时不知道如何获取远程依赖项。为了解决这个问题,一旦您添加了一个新的远程
import
、运行deno --prefetch your_file.ts
以拉下所有依赖项。为了使事情更简单,我建议将所有远程依赖项保存在一个文件deps.ts
中(以及此文件中的 运行--prefetch
)并重新导出内容,以便项目中的其他文件可以利用部门。
tldr
在特定项目中安装 denoland.vscode-deno
extension 1. Then 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, you can also use the deno: Init
向导 2 开始:
要集成 TS 工作区版本而不是 VS Code built-in,请查看 linked docs。
1 This one 已弃用。
2 注意:在一个新的空项目中,至少需要一个源文件存在,向导才能正常运行。
更多详情
扩展有什么作用?
- 允许在 VS Code 中显式
.ts
扩展 - 解决 URL 导入说明符,例如
"https://deno.land/std@0.56.0/http/server.ts"
- 集成 Deno 运行时类型(例如
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
模块的更严格维护的 collection,因此它也将被正确输入。
如何解析 .js
个模块的类型
Deno 提供 additional ways 为 .js
个文件引用 .d.ts
个文件。
// @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
类型
最简单的选择是在 settings.json
中设置 "deno.unstable": true
(PR) 并重新启动 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 Code automatically includes deno.runtime.d.ts
存在 tsconfig.json
(1).
重大变更
vscode-deno
v1.26.0
项目的.vscode/settings.json
中的"deno.enable": true
扩展需要explicitly enabled(默认为false
)。之前,默认值是 true
.
vscode-deno
< 1.25.0
在每种情况下(稳定和不稳定)安装 Deno 类型 - 参见 "How to use --unstable types"
。