仕事ですぐに使えるTypeScriptを読んでいくその38

これは

TypeScriptの学習にとても役立ちそうなドキュメントを教えてもらったので
コツコツと読んでいく記事です。

参考

著作権者:フューチャー株式会社(Future Corporation)様

future-architect.github.io

ジェネリクス

any や unknown 、Union Typeとの違い

未知の型といえばany、unlnown、UnionTypeなどがある。
anyやunknownに値を設定すると型情報がリセットされ
取り出すときに適切な型情報を宣言する必要がある。
Union Typeについても、型の補完時に余計な型情報がまざってしまうため、
型ガードで必要な型である保証が必要。

function lazyInit(init: () => any): () => any {
  let cache: any;
  let isInit = false;
  return function(): any {
    if (!isInit) {
      cache = init();
    }
    return cache;
  }
}
const getter = lazyInit(() => "initialized");
const value = getter();
// valueはstring型なので、上記のvalueの後ろで.をタイプするとメソッド候補が出てくる

ジェネリクスは共通ライブラリの作り込みなどに使うことなどで活躍する機能で
間違った情報が入れにくい関数やクラス、インタフェースが作れる。
ただ、後日読み直すと読みにくいことが多いので多用は考える必要がある。

今日はここまで。