条件型 は 以下のような三項演算子のような記述で型を定義します。(条件式に合致するときはX。それ以外はY。)
type MyType = 条件式 ? X : Y
条件式 にはいろいろな記述があります。 例えば
interface Animal {
live(): void;
}
interface Dog extends Animal {
woof(): void;
}
type MyType1 = Dog extends Animal ? number : string;
// これは以下 ↓ と同じです。
type MyType1 = number
type MyType2 = RegExp extends Animal ? number : string;
// これは以下 ↓ と同じです。
type MyType2 = string