[[条件付き型 (TypeScript)|条件付き型]]において、比較対象の型の一部を別名の型として抽出するキーワード。 ```ts type Head<T extends any[]> = T extends [infer U, ...any[]] ? U : T extends Array<infer U> ? U : never; type A = Head<string[]>; // ^? type A = string type B = Head<[string, number]>; // ^? type B = string type C = Head<[number, string, boolean]>; // ^? type C = number type D = Head<boolean>; // Type 'boolean' does not satisfy the constraint 'any[]'.(2344) ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/C4TwDgpgBAEhCGATAPAFShAHsCA7RAzlPLiANoC6AfFALxTpY75FkCWuAZhAE5QCqAGigA6MSXIUKAKChQA-ANlQAXAwzY8hKAEEePeCGQdufflWWL+ytbggA3XgG5p00JF11YCFAWA8OAHNKKhcAejC5KAA9eTdwaAAhLzgkZDI-ANxA4VwAVwBbACNeanDIuVj4jwBhFJ90-OLeYUyg4SKAe06AGwRcMukIqKr3aAARerSu3v7QocjUBKgAchm+khWoRE6IIlxO4CgCeGA2Ak4QKGAAC2gAY07cTPgOI5WJShWRAAoAJgAzAAWIEASmkQA">Playground</a></button>