首页 > 解决方案 > 仅为对象的某些属性创建类型

问题描述

有没有办法只为对象的某些属性指定类型而不是全部?例如,如果我有一些对象

const user_account = {id: 37593, created: "23/04/2020", last_active: "23/04/2020"};

我只想指定id为 type number,而其他所有内容都保留为any,有没有办法做到这一点?谢谢。

标签: typescript

解决方案


您可以使用字符串索引签名来表示所有属性都符合特定的值类型;在你的情况下,any。您添加到索引签名之外的对象的任何命名属性仍必须符合该类型,但您可以使它们更具体。由于number比 更具体any,您可以像{ [k: string]: any; id: number }.

所以

const settings: { id: number, [k: string]: any } = 
  {id: 37593, created: "23/04/2020", last_active: "23/04/2020"};

应该适合您,具体取决于您的用例。请注意,这样的注释会将 的类型扩大settings到带注释的类型,因此编译器不会记住该类型中未指定的任何内容:

settings.id; // known to be number
settings.created; // only known as any, not string
settings.randomPropName; // also known as any

好的,希望有帮助;祝你好运!

Playground 代码链接


推荐阅读