只为对象的某些属性创建一个类型。

问题描述 投票:0回答:1

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

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

而我只想说明 id 属于 number而其他一切都保持原样 any,有什么方法可以做到这一点?谢谢,有什么办法可以做到这一点吗?

typescript
1个回答
1
投票

你可以使用 串号 来表示所有的属性都符合一个特定的值类型;在你的例子中。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

好的,希望能帮到你,祝你好运!

代码的游戏场链接

© www.soinside.com 2019 - 2024. All rights reserved.