コガミツlog

福岡在住エンジニアのブログ

実践 TypeScript を読んで新しい知見を得る | Utility Types

TSを雰囲気で使っている部分があるので書籍を読んで新しい知見を得ようという試み。 書籍は実践 TypeScript です。

実践TypeScript

実践TypeScript

Amazon

※記載コードは書籍を一部省略して書いたり、別途ググって別のコードを記載しています。

※正確なコードは書籍をご確認ください。

全部書くとただの写経になるので、気になるのだけ。

type User = {
  name: string
  age: number | null
}

Partial型

Object型のプロパティを全てoptional型に変換し、新しい型を生成する型。

type PartialUser = Partial<User>
// 結果
type PartialUser = {
  name?: string | undefined
  age?: number | null | undefined
}

Required型

Object型のプロパティから、全てoptionalを取り除き、新しい型を生成する型。

type RequiredUser = Required<User>

Record型

ある型のプロパティを別の型にマッピング。

type UserRecord = Record<number, User>
// 結果
type UserRecord = {
  number: User
}

こんな感じで使うと良さそう。

let users: Record<number, User> = {
  0: { name: "John Doe", age: 30 },
  1: { name: "Ibrahima Fall", age: 34 },
  2: { name: "Sara Duckson", age: 90 },
}

Pick型

第1Genericsから第2Genericsの型を抽出して新しいObject型を生成する型。

type UserAge = Pick<User, 'age'>
// 結果
type UserAge = {
  age: number | null
}

Omit型

Pick型の反対。不要なプロパティを指定すると、新しいObjcet型を生成する型。

type WithoutAge = Omit<User, 'age'>
// 結果
type WithoutAge = {
  name: string
}