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

これは

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

参考

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

future-architect.github.io

ジェネリクス

型変換のためのユーティリティ型

詳細は公式のハンドブックを見ると良いらしい。

www.typescriptlang.org

オブジェクトと属性名に対するユーティリティ型

Tに対して別のプロパティを追加する方法として以下の三つがある。
 ・Record<K,T>:Tを子供の要素にもつMap型のようなKをキーとしたデータ型を作成
 ・Pick<T,K>:Tの中の特定のキーKだけを持つ型を作成
 ・Omit<T,K>:Tの中の特定のキーKだけを持たない型を作成

Record<K,T>を使ったハンドブックに記載されている例

interface PageInfo {
    title: string;
}

type Page = 'home' | 'about' | 'contact';

// PageをキーとしたPageinfoを子要素にもつRecord
const x: Record<Page, PageInfo> = {
    about: { title: 'about' },
    contact: { title: 'contact' },
    home: { title: 'home' },
};

Pick<T,K>を使ったハンドブックに記載されている例

interface Todo {
    title: string;
    description: string;
    completed: boolean;
}

// title' | 'completed'をもつTodo型を作成
type TodoPreview = Pick<Todo, 'title' | 'completed'>;

const todo: TodoPreview = {
    title: 'Clean room',
    completed: false,
};

Omit<T,K>を使ったハンドブックに記載されている例

interface Todo {
    title: string;
    description: string;
    completed: boolean;
}

// descriptionキーを持たないTodo型を作成
type TodoPreview = Omit<Todo, 'description'>;

const todo: TodoPreview = {
    title: 'Clean room',
    completed: false,
};

今日はここまで。