DenoにおけるTypeScriptの独自拡張について
はじめに
設定関連
compilerOptions.jsx: "precompile"
compilerOptions.jsxPrecompileSkipElements
compilerOptions.jsxImportSourceTypes
この課題を解決するためにDeno v1.43.0で導入されたのがcompilerOptions.jsxImportSourceTypes (@jsxImportSourceTypesプラグマ)です code:deno.json
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "npm:react@18.3.1",
"jsxImportSourceTypes": "npm:@types/react@18.3.1"
}
}
型チェック
JavaScriptで書かれた外部ライブラリをimportする際に、そのライブラリに対して任意の型を指定するための機能です code:typescript
Denoがリモートモジュールをダウンロードした際に、レスポンスにX-TypeScript-Typesヘッダーが設定されていた場合、そこで指定されたURLに追加で問い合わせを行います。その追加の問い合わせにより返却された型定義ファイルを、元のモジュールの型定義として適用してくれます。 fast check
jsrパッケージに関する型チェックを高速化するために導入された独自の仕組みです slow typesとは明示的に型が宣言されておらず、ソースコードを元に型定義を判断する必要のある関数などの定義を指します
パッケージの公開APIでslow typesが使用されていると、パッケージの利用者が型チェックをする際の実行時間の増加などの問題が起きうるため、jsrではこのslow typesを公開APIに含むパッケージはできる限り公開しないことが推奨されます (deno publishを実行する際にデフォルトでfast checkが実行されます) リンク