投稿数 585
公開から 2940

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