extends Constraints on infer Type Variables
TL;DR
inferにextendsの条件指定が付けられるようになった。
Prev
inferとextendsは分けて書く必要があった。
type FirstIfString<T> =
T extends [infer S, ...unknown[]] ?
S extends string ? S : never
: never;
type F1 = FirstIfString<[string, number]>; // string
type F2 = FirstIfString<["hello", number]>; // "hello"
Current
inferに続けてextendsを書けるようになった。
type FirstIfString<T> =
T extends [infer S extends string, ...unknown[]] ?
S : never;
type F1 = FirstIfString<[string, number]>; // string
type F2 = FirstIfString<["hello", number]>; // "hello"
Last updated