从 JavaScript 迁移到 Deno 和从 Deno 迁移到 JavaScript
Deno 的优势之一是它对 TypeScript 和 JavaScript 的处理相当平等。这意味着您可能希望从 JavaScript 迁移到 TypeScript,甚至从 TypeScript 迁移到 JavaScript。Deno 有几个功能可以帮助您实现这一点。
类型检查 JavaScript
您可能有一些 JavaScript 代码,您希望确保它们具有更好的类型安全性,但您不想进行添加类型注释的繁琐过程。
Deno 支持使用 TypeScript 类型检查器来检查 JavaScript 代码。您可以通过在文件中添加 `check JavaScript` 标记来标记任何单个文件。
// @ts-check
这将导致类型检查器推断 JavaScript 代码的类型信息,并将任何问题作为诊断问题提出。
可以通过提供一个启用了 `check JS` 选项的配置文件,为程序中的所有 JavaScript 文件启用这些选项。
{
"compilerOptions": {
"checkJs": true
}
}
并在命令行上设置 `--config` 选项。
在 JavaScript 中使用 JSDoc
如果您正在检查 JavaScript 代码,甚至将 JavaScript 导入到 TypeScript 中,您可以在 JavaScript 中使用 JSDoc 来表达比代码本身推断出的更多类型信息。Deno 支持此功能,无需任何额外的配置,您只需按照支持的 TypeScript JSDoc 规范对代码进行注释。例如,要设置数组的类型
/** @type {string[]} */
const a = [];
跳过类型检查
您可能有一些正在试验的 TypeScript 代码,其中语法有效,但并非完全类型安全。您可以始终通过传递 `--no-check` 来绕过整个程序的类型检查。
您还可以跳过对整个文件的类型检查,包括启用了 `check JS` 的 JavaScript 文件,方法是使用 `no-check` 标记。
// @ts-nocheck
仅将 JS 文件重命名为 TS 文件
虽然这在某些情况下可能有效,但它在 Deno 中有一些严重的限制。这是因为 Deno 默认情况下在所谓的“严格模式”下运行类型检查。这意味着在非严格模式下不会捕获的许多不清晰或模棱两可的情况会导致生成诊断信息,而 JavaScript 在类型方面就是不清晰和模棱两可的。