【问题标题】:Typescript I want a type which is the union of all types in an abject properties打字稿我想要一个类型,它是一个卑鄙属性中所有类型的联合
【发布时间】:2020-09-28 12:04:38
【问题描述】:

我有这个东西

{
    "obj1" : type1;
    "obj2" : type2;
    "obj3" : type3;
    "obj4" : type4;
    "obj5" : type5;
}

我想得到如下类型。

type MyType = type1 | type2 | type3 | type4 | type5;

我认为问题的标题听起来不太好,如果您能建议问题的标题,我也将不胜感激。

【问题讨论】:

  • 请不要从 javascript 对象生成类型,这不是 TypeScript 的意图。首先手动定义类型,然后用它们创建和键入一些 javascript 对象。
  • 我的目的是反映类型而不是生成它们
  • 还是一样糟糕的反映。

标签: typescript typing


【解决方案1】:

你可以这样做:

interface A {
  obj1: number;
  obj2: string;
  obj3: boolean;
}

type MyType = A[keyof A];

keyof A 提取密钥的地方,你得到"obj1" | "obj2" | "obj3"。 然后你可以用它来索引你的记录类型A[k]

【讨论】:

  • 他说的是object,而不是interface
  • 他有type1type2,后跟分号。这可能是一个界面@johannchopin。
  • 如果是对象,可以替换成type MyType = (typeof obj)[keyof typeof obj]
猜你喜欢
  • 1970-01-01
  • 2021-12-14
  • 2020-07-07
  • 1970-01-01
  • 2019-08-29
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
相关资源
最近更新 更多