Built-in Utility Types
ある型がほとんどのコードベースで有効性があると感じられた場合、
その型はTypeScriptに追加され、他の誰もが使えるようになります。
TypeScriptに追加されたら、いつでもその型が使えることが
保証されます。
Partial
// KeysFromからプロパティの一覧を受け取り、
各プロパティの値をType型にした型を作成します。
型キーの一覧:
interface Sticker {
id: number;
name: string;
createdAt: string;
updatedAt: string;
submitter: undefined | string;
}
type StickerUpdateParam = Partial
// 型の第一引数に受け取ったオブジェクトから、第二引数に任意のプロパティ名を定義して
そのプロパティと対応する値の型を持つ型を作成します。
型のホワイトリストのようなものです。
type NavigationPages = "home" | "stickers" | "about" | "contact";
// 上記キーに対応するデータの型:
interface PageInfo {
title: string;
url: string;
axTitle?: string;
}
const navigationInfo: Record
// 型の第一引数に受け取ったオブジェクトから、第二引数に任意のプロパティ名を定義して
そのプロパティを除外した型を作成します。
型のブラックリストのようなものです。
type StickerSortPreview = Pick
// 型の第一引数に受け取った共用体型から、第二引数に受け取った共用体型を
除外した型を作成します。
type StickerTimeMetadata = Omit
// 型の第一引数に受け取った共用体型から、第二引数に受け取った共用体型に
当てはまる型を作成します。
type HomeNavigationPages = Exclude
// 型引数に受け取った共用体型から、nullとundefinedを除外した型を返します。
値のバリデーションに使えるでしょう。
type DynamicPages = Extract
// クラスインスタンス、またはコンストラクタ関数を持つオブジェクトから、
そのインスタンスの型を作成します。
type StickerLookupResult = Sticker | undefined | null;
type ValidatedResult = NonNullable
// 型引数に受け取ったオブジェクト型からオプショナルのプロパティをすべて
必須に変換した型を作成します。
class StickerCollection {
stickers: Sticker[];
}
type CollectionItem = InstanceType
// 他の型とは違い、ThisTypeは新しい型を返しません。
関数で使われるthisの型を型引数に受け取った型に変換します。
ThisTypeはTSConfigのnoImplicitThisがtrue
の場合にしか使えません。
https://www.typescriptlang.org/docs/handbook/utility-types.html
type AccessiblePageInfo = Required