網站搜尋

TypeScript 介面型別值轉聯合型別


在 TypeScript 中,有可能從介面中獲得包含所有類型值的聯合類型嗎?

例如,當給定一個介面時

interface A {
  a: string;
  b: () => void;
  c: number;
  d: string;
  e: 'something';
}

結果應該是

type B = string | () => void | number | 'something';

我完全不知道,如果這可能的話,我會如何處理這個問題。

答案#1

你可以使用 keyof 例如。

 type B = A[keyof A] // will be string | number | (() => void)

類型 something 不會出現,因為編譯器不會區分類型 string 和 something——由於兩者都是字符串,它會在 type B 中省略它。