将打字稿接口属性类型转换为联合

gib*_*ibo 3 typescript

我有这个接口,我想从它包含的键类型生成一个新类型。

interface SomeType {
  abc: string;
  def: number;
  ghi: boolean;
}
Run Code Online (Sandbox Code Playgroud)

输入生成:

type SomeOtherType = string | number | boolean
Run Code Online (Sandbox Code Playgroud)

这在打字稿中可能吗?

Das*_*ter 5

您可以尝试使用 keyof 运算符进行索引:

interface SomeType {
  abc: string;
  def: number;
  ghi: "sdf";
}

type t = SomeType[keyof SomeType];
Run Code Online (Sandbox Code Playgroud)

类型 t 将被假定为来自对象值的类型联合: 在此输入图像描述

https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgMoHsC2EAqBPABxQG8AoZZOAIwQC5kBnMKUAcwG5zkATCGekAFdMVaJwqsAFsHoAiBtxizOAX1KkwhFGGQBeNFlxaA2gGsIedDAPZ8RALrsgA