手順
- 適当に型定義ファイルをおく
- 今回はtsconfig.jsonからみて
app/assets/javascripts/types/custom/index.d.ts
という場所に型定義ファイルを追加した -
app/assets/javascripts/types/index.d.ts
のように、types直下に型定義ファイルをおくと下記設定ではresolveできないので注意
- 今回はtsconfig.jsonからみて
-
tsconfig.json
のcompilerOptions.typeRoots
を編集する - おわり
tsconfig.json
{
"compilerOptions": {
// "traceResolution": true, // 各種名前解決の様子をログに残してくれる. 様子を追うときに利用した
"typeRoots": [
"node_modules/@types", // デフォルトではここだけ読む.忘れず書き添える
"app/assets/javascripts/types" // ここを読むように変更
]
},
}
これだけで(グローバルに使いたい)オリジナルの型定義を一箇所にまとめて書けるようになった.
app/assets/javascripts/types/index.d.ts
declare var gon: any
type id = string | number
みたいなものを書いておける。
疑問
しかしこのことを調べると、typeRoots
ではなくbaseUrl
, paths
を使うみたいな記述が多く、その使い分けをちょっとよく分かっていない。