0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TypeScript型継承早見表

Posted at

型の継承に関してパターンが多くてわかりずらい。。
表にして理解を深めようと思います。

クラスに関する型の適用と継承

状況 キーワード 重要度 使用例 説明
クラスの型定義 class ★★★★★ class MyClass {} クラスの定義
クラスの継承 extends ★★★★★ class MyExtendedClass extends MyClass {} 他のクラスを継承して新しいクラスを作成
クラスの型適用 implements ★★★★☆ class MyClass implements MyInterface {} クラスにインターフェースの型を適用
抽象クラス abstract ★★★★☆ abstract class AbstractClass {} インスタンス化できないクラス
ミックスイン - ★★★☆☆ class MyClass extends Mixin(OtherClass) {} 複数のクラスからメソッドを取り込むためのパターン

インターフェースに関する型の適用と継承

状況 キーワード 重要度 使用例 説明
インターフェースの定義 interface ★★★★★ interface MyInterface {} インターフェースの定義
インターフェースの継承 extends ★★★★☆ interface MyExtendedInterface extends MyInterface {} 他のインターフェースを継承して新しいインターフェースを作成
インターフェースの拡張 extends ★★★★☆ interface MyInterface extends OtherInterface1, OtherInterface2 {} 複数のインターフェースを拡張して新しいインターフェースを作成

type に関する型の適用と結合

状況 キーワード 重要度 使用例 説明
型エイリアスの定義 type ★★★★★ type MyType = { a: string, b: number }; 特定の型に名前を付ける
型の合成 & ★★★★☆ type Combined = TypeA & TypeB; 複数の型を合成して新しい型を作成
ユニオン型 ` ` ★★★★☆ `type MyUnion = TypeA
条件付き型 - ★★★☆☆ type Conditional<T> = T extends X ? TypeA : TypeB; 条件に基づいて型を選択
マップドタイプ - ★★★☆☆ type Mapped<Type> = { [Property in keyof Type]: NewType }; オブジェクトの各プロパティに対して型を適用
型の抽出 - ★★★☆☆ type Extracted = MyType['property']; オブジェクト型からプロパティの型を抽出

高度な使用例

状況 キーワード 重要度 使用例 説明
ジェネリック型 - ★★★★☆ function identity<T>(arg: T): T { return arg; } 汎用的な型を提供
ユニオン型 ` ` ★★★★☆ `type MyType = string
キーの抽出 keyof ★★★☆☆ type MyKeys = keyof MyObject; オブジェクトのキーを抽出
タプル型 - ★★★☆☆ type MyTuple = [string, number]; 固定された長さの配列とその要素の型
ユーティリティ型 - ★★★☆☆ type MyReadonly = Readonly<{ a: number, b: string }>; 標準で提供される便利な型操作
インターセクション型 & ★★★☆☆ type MyType = A & B; 複数の型のプロパティをすべて持つ型
テンプレートリテラル型 - ★★★☆☆ type World = "world"; type Greeting = hello ${World}; 文字列リテラル型の組み合わせ
条件付き型 - ★★★☆☆ type IsString<T> = T extends string ? true : false; 型に基づいた条件分岐
マップドタイプ - ★★★☆☆ type Optional<T> = { [K in keyof T]?: T[K] }; オブジェクトの各プロパティを操作
型の抽出 - ★★★☆☆ type MyType = MyObject['myKey']; オブジェクトのプロパティの型を抽出
型のフィルタリング - ★★★☆☆ type NonFunctionProps<T> = { [K in keyof T]: T[K] extends Function ? never : T[K] }; 特定の型を除外
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?