首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从键的联合创建对象类型

问从键的联合创建对象类型
EN

Stack Overflow用户
提问于 2019-04-13 17:07:42
回答 1查看 162关注 0票数 0

我知道keyof运算符,以及如何创建由该对象的键组成的联合类型,如下所示:

代码语言:javascript
复制
interface Foo {
  a: string;
  b: string;
}

type Goo = keyof Foo; // "a" | "b"

我想做的正好相反,从键的联合创建一个新的对象类型。

代码语言:javascript
复制
const MakeTuple = <T extends string[]>(...args: T) => args;
const Types = MakeTuple("A", "B", "C");
type TypeVariant = typeof Types[number];

type VariantObject = {
  // This gives error consider using a mapped object but I'm not sure how to do that
  [type: TypeVariant]: [boolean, boolean, boolean, string[]];
}

因此,我想要的是获取键的联合,并生成一个类型,该类型包含[boolean, boolean, boolean, string[]]类型的每个键的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-13 18:07:11

您可以只使用预定义的Record映射类型

代码语言:javascript
复制
const MakeTuple = <T extends string[]>(...args: T) => args;
const Types = MakeTuple("A", "B", "C");
type TypeVariant = typeof Types[number];

type VariantObject = Record< TypeVariant, [boolean, boolean, boolean, string[]] >
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55663811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档