背景
Deno で書いた TypeScript を npm にアップロードするために denoland/dnt を利用しています。
しかし、 error TS2304: Cannot find name 'ErrorOptions' をいうエラーメッセージで失敗するので困っていました。
解決方法を見つけた(Claude先生が)ので共有しておきます。
解決方法
原因は @std/assert が ECMAScript の新機能を使っているためでした。
TypeScriptが認識している標準ライブラリーのバージョンが古いので、明示的に新しいバージョン ESNext を指定すればOKです。
また、globalThis.addEventListener の型情報が解決できずに失敗するので DOM も追加します。
import { build, emptyDir } from "@deno/dnt";
await emptyDir("./npm");
await build({
entryPoints: ["./limit-concurrency.ts"],
outDir: "./npm",
shims: {
deno: true,
},
// コンパイラーオプションを追加する。
compilerOptions: {
lib: ["ESNext", "DOM"],
},
// 以下略
});
これでも解決しない場合、denoland/dnt が古いことが考えられます。 最新のバージョンにアップデートしましょう。
これで以前行ったワークアラウンドは不要になりました。
まとめ
denoland/dntがerror TS2304: Cannot find name ‘ErrorOptions’で失敗する問題を解決しました。
- コンパイラーオプションで
ESNext,DOMを標準ライブラリーに指定する - denoland/dnt をアップデートする
AIに聞けば何でも解決できちゃう時代ですが、一応記録として残しておきます。