MyCanvas

【覚書】TypeScriptの型記法一覧

はじめに

こんにちは、ITコンサルをやっているまるやきです。
今回はTypeScriptの便利な型記法を備忘的に一覧にまとめました。
これらを活用することで、型の安全性を保ちつつ柔軟なコードを書くことができます。
めざせ!型定義マスター!!


基本の型記法

記法説明
type型エイリアスを作成type Point = { x: number; y: number };
interfaceインターフェースを定義interface User { id: number; name: string; }
readonly読み取り専用プロパティtype Point = { readonly x: number; readonly y: number };
?オプショナルプロパティtype User = { id: number; name?: string };
enum列挙型(値を持つ定数セット)enum Direction { Up, Down, Left, Right }

ユーティリティ型

記法説明
Partial<T>すべてのプロパティをオプショナルにするtype PartialUser = Partial<User>;
Required<T>すべてのプロパティを必須にするtype RequiredUser = Required<User>;
Readonly<T>すべてのプロパティを読み取り専用にするtype ReadonlyUser = Readonly<User>;
Pick<T, K>指定したプロパティのみを持つ型を作成type PickedUser = Pick<User, "id">;
Omit<T, K>指定したプロパティを除外した型を作成type OmittedUser = Omit<User, "id">;
Record<K, T>指定したキーと値の型を持つオブジェクト型を作成type UserRoles = Record<string, "admin" | "user">;
Extract<T, U>共通する型のみを抽出type Common = Extract<"a" | "b" | "c", "a" | "c" | "d">; // "a" | "c"
Exclude<T, U>指定した型を除外type Diff = Exclude<"a" | "b" | "c", "a" | "c">; // "b"
NonNullable<T>nullundefined を除外type NonNull = NonNullable<string | number | undefined>; // string | number
ReturnType<T>関数の戻り値の型を取得type FuncReturn = ReturnType<() => string>; // string
Parameters<T>関数の引数の型を取得type FuncParams = Parameters<(id: number, name: string) => void>; // [number, string]
ConstructorParameters<T>コンストラクタの引数の型を取得type CtorParams = ConstructorParameters<typeof Date>;
InstanceType<T>クラスのインスタンスの型を取得type DateInstance = InstanceType<typeof Date>;

条件付き型

記法説明
T extends U ? X : YTU のサブタイプなら X、そうでなければ Ytype IsString<T> = T extends string ? true : false;
infer型推論に使うtype Return<T> = T extends (...args: any[]) => infer R ? R : never;

関数関連

記法説明
(...args: any[]) => T関数の型を定義type Func = (x: number, y: number) => number;
overload関数のオーバーロードを定義function add(x: number, y: number): number; function add(x: string, y: string): string;

タプル・配列関連

記法説明
[T, U]固定長タプルtype Point = [number, number];
readonly [T, U]読み取り専用タプルtype ReadonlyTuple = readonly [number, number];
Array<T>配列型(一般的な記法)type NumberArray = Array<number>;
T[]配列型(簡略記法)type StringArray = string[];

マッピング型

記法説明
{ [K in Keys]: T }キーを動的に定義type Mapped<T> = { [K in keyof T]: T[K] };
Record<K, T>キーと値の型を固定type RoleMap = Record<string, "admin" | "user">;

キー操作

記法説明
keyof Tオブジェクトのキーを取得type UserKeys = keyof User; // "id" | "name"
typeof型を取得const user = { id: 1, name: "Alice" }; type UserType = typeof user;

テンプレートリテラル型

記法説明
${T}文字列リテラル型type ID = user-${number}; // "user-1" など

まとめ

今回は備忘的にTypeScriptの型システムについてまとめてみました。
上記の型記法を活用することで、TypeScriptの型システムをより柔軟に利用できます。
特に、ユーティリティ型や条件付き型を組み合わせると、型定義の負担を減らし、型安全なコードを効率的に記述できるので、積極的に使用しましょう!

© 2023 maruyakiプライバシーポリシー