Naked Type Parameter

建立:2026-05-19 · 最後編輯:2026-05-19

在 condition type 中,出現在 extends 的左邊型別,如果是單獨的,未被任何其它型別包住,則它是 naked type parameter。

type A<T> = T extends string ? 1 : 2;
           // ^ 這裡的 T 是 naked type parameter

type B<U> = U extends unknown ? [U, U] : never;
//           ^ 這裡的 U 也是 naked

type C<T> = [T] extends string ? 1 : 2;
//          ^ 左邊是 [T],不是 T,本體被包在 tuple 裡

type D<T> = (T | number) extends string ? 1 : 2;
//          ^ 左邊是 T | number,不是 T

type E<T> = Promise<T> extends { then: any } ? 1 : 2;
//          ^ 左邊是 Promise<T>,不是 T