TypeScript型定義ファイルとはなんなのか?
Categories:
typescript
いきさつ
TypeScript勉強中。 d.tsファイルってなに? いまだによくわかってない。。
d.tsとは?
型定義ファイルといいます。 型宣言ファイル
何に使うの?
ライブラリの型定義ができるようにするためです。
グローバルライブラリ
todo
Ambient(アンビエント)
アンビエントとは?
実装を定義しない宣言を「アンビエント」と呼びます。 通常、これらは.d.tsファイルで定義されます。 Node.jsでは、ほとんどのタスクは1つ以上のモジュールをロードすることで実行されます。 最上位のエクスポート宣言を使用して、各モジュールを独自の.d.tsファイルで定義できますが、1つの大きな.d.tsファイルとして記述する方が便利です。
実践
いろいろ書くと長くなるので実践でどういう感じで使うのか、だけ。
// nuxt.d.ts
declare module "vuex/types/index" {
interface ActionTree<S, R> {
nuxtServerInit: (
context: ActionContext<S, R>,
nuxtContext: ApplicationContext
) => void;
}
}
こんな感じで書く。
declare module {これはなに?}
どうやらモジュール名らしい
// モジュール名url
declare module "url" {
export interface Url {
protocol?: string;
hostname?: string;
pathname?: string;
}
export function parse(urlStr: string, parseQueryString?, slashesDenoteHost?): Url;
}
importして使える。
import * as URL from "url";
let myUrl = URL.parse("http://www.typescriptlang.org");
モジュール名っていうのは こうやってできるやつのことか。。。 import * as foo from “vuex/types/index”
感想
う〜ん。。 わかりづらい。。 とりあえずdeclareして、もしそれが存在していたらよしなに型定義してくれるってことね。。
参考
https://www.typescriptlang.org/docs/handbook/declaration-files/library-structures.html