如果有合适的远程工作,欢迎与我联系。我主要使用 TypeScript / Go / PHP 这些语言。
May 20, 2020 in Dev

在 Deno 里使用 JavaScript

如果你在 TypeScript 中使用 JS 的话,TypeScript 会自动推导类型,而很多时候会产生错误的类型,比如:

function sort(arr, options) {
  options = Object.assign({ reverse: true }, options)
  return options.reverse ? 
    arr.sort().reverse() : 
    arr.sort()
}

TypeScript 会把这里的两个参数都当做必需的,而事实上 options 并不是。

如果是本地模块,你可以用 JSDoc 或者 d.ts 来给 JS 加上类型,而如果是 import 外部模块,你就得用 @deno-types 这个 directive 来指定相关的 d.ts 文件:

// @deno-types="https://unpkg.com/cac@9.5.8/mod.d.ts"
import { cac } from 'https://unpkg.com/cac@9.5.8/mod.js'

这对于你复用 npm 上已有的又不依赖 Node.js API 的模块很方便,不过值得注意的是,Deno 的 VSCode 插件暂时还不支持这一 directive 的使用,而 Deno CLI 编译是完全没问题的。

另外我推荐 pika.dev,你可以在上面搜索到很多支持 ES Module 的 npm 模块。