TypeScript
【TypeScript】コンディショナルタイプ(Conditional Types)とは何ですか?
作成日:2021年08月06日
更新日:2021年08月08日
社会人の時に使用する型と、学生の時に使用する型があったとします。
ts
interface Profile {
name: string;
age: number;
}
interface Worker extends Profile {
job: string;
}
interface Student extends Profile {
school: string;
}
この型を社会人の時と学生の時で使い分ける時、どうすればいいのでしょうか。
このような時に使用するのが、コンディショナルタイプ(Conditional Types)です。
書き方は、以下のように三項演算子で書きます。
ts
type Resume<T> = T extends { job: string } ? T : Student;
TがWorker の時は、jobがあるのでWorkerになり、TがStudentの時は、jobがないのでStudentになります。
TをWorkerにしてみます。
ts
const profile: Resume<Worker> = {
name: "田中",
age: 23,
job: "営業",
};
確認してみると、
エラーが発生しておりません。
では、T を Student にしてみます。
ts
const profile: Resume<Student> = {
name: "田中",
age: 23,
job: "営業",
};
確認してみると、
エラーとなり、『型 '{ name: string; age: number; job: string; }'\ を型 '\Student'\ に割り当てることはできません。オブジェクト リテラルは既知のプロパティのみ指定できます。'job' は型 'Student' に存在しません。』と指摘されました。
お知らせ
私事ですが、Udemyで初心者を対象にしたReactの動画コースを作成しました。
Reactについて興味がありましたら、ぜひ下のリンクからアクセスしてください。
詳しくはこちら(Udemyの外部サイトへ遷移します)