Typescript 接口类型值到联合类型

Pet*_*rdt 6 typescript

是否可以从打字稿中的接口获取具有所有类型值的联合类型?

例如,当一个接口被指定为

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

结果应该是

type B = string | () => void | number | 'something';
Run Code Online (Sandbox Code Playgroud)

我不知道,如果可能的话,我将如何解决这个问题。

Mur*_*göz 12

你可以使用keyof例如

 type B = A[keyof A] // will be string | number | (() => void)
Run Code Online (Sandbox Code Playgroud)

类型something不会出现,因为编译器不区分类型stringsomething- 因为两者都是字符串,所以将在type B.

  • 是的,你的两件事对我来说其实很清楚。唯一让我困惑的是,身份`A["a" | "b"] = A["a"] | A["b"]`(这基本上是您的答案的基本形式)是正确的 _并且似乎仍然没有在打字稿文档中的任何地方提及_。**而且我觉得很奇怪,语言中确实存在一个潜规则!如果还有其他的呢?我怎么知道他们?** 所以我的问题实际上是:_你是从哪里知道这条规则的?_ (2认同)