我需要声明一个有很多键的对象,如果要一一定义我太累了.

像这样:

type ReturnValue = {
   // here have a lot of keys, I want a simple way to declare.
   // May I do that?
   ['name'| 'phone' | ... ]: string;
}

我还没有try 过,我不知道该怎么办.

最好有办法做.

推荐答案

您可以使用TypScript的映射类型和联合类型来更简洁地实现这一目标.以下是使用映射类型声明ReturnValue类型的方法:

type Keys = 'name' | 'phone' | /* add more keys here */;

type ReturnValue = {
  [K in Keys]: string;
}

这将创建一个具有在Keys联合类型中指定的键的类型ReturnValue,并且每个键将具有类型为字符串的值.这种方法使您可以避免逐个手动指定每个键.

Typescript相关问答推荐

如何使用另一个类型的属性中的类型

TypScript在对象上强制执行值类型时推断对象文字类型?

有没有办法适当缩小类型?

在MessageStore对象中实现条件类型时出现TypeScrip错误

返回具有递归属性的泛型类型的泛型函数

Angular NgModel不更新Typescript

了解类型规则中的关键字

我可以使用TypeScrip从字符串词典/记录中填充强类型的环境对象吗?

如何从扩展接口推断泛型?

Fp-ts使用任务的最佳方法包装选项

从子类集合实例化类,同时保持对Typescript中静态成员的访问

确保对象列表在编译时在类型脚本中具有唯一键

如何正确调用创建的类型?

在正常函数内部调用异步函数

打字错误TS2305:模块常量没有导出的成员

为什么 Typescript 无法正确推断数组元素的类型?

基于可选参数的动态类型泛型类型

如何强制对象数组中的对象属性具有非空字符串值?

Typescript 编译错误:TS2339:类型string上不存在属性props

错误:仅允许在‘使用服务器’文件中导出异步函数