【问题标题】:How to get the values or an object in the order of its type in TypeScript? [duplicate]如何在 TypeScript 中按类型顺序获取值或对象? [复制]
【发布时间】:2020-02-01 11:32:57
【问题描述】:

考虑如下界面:

interface Foo {
  bar: string;
  baz: number;
}

我想按照上面定义的顺序获取Foo的值,而不是赋值的顺序,即:

magicFn({bar: 'a', baz: 0}) === magicFn({baz: 0, bar: 'a'}) // ['a', 0]

我幼稚的方法是使用Object.values(),但这忽略了接口的顺序(接口不是Javascript实体,这并不奇怪)。

我看过一个issue关于它,但它已被MS锁定......

编辑:

我不想要任何财产秩序的保证。我想要一个函数,它按照给定接口定义的顺序检索值。

【问题讨论】:

  • 您在运行时没有任何类型(接口)信息
  • 接口在运行时不存在。有一些替代方案:Get keys of a Typescript interface as array of strings
  • 请注意,我不想要对象属性顺序隔离,我只想根据给定接口按给定顺序检索值。
  • 您的用例是什么?可能有更好的方法来实现您所追求的目标?

标签: javascript typescript


【解决方案1】:

javascript 不保证属性顺序,Typescript 是 javascript 的超集。 我建议您使用不同的数据结构来保留顺序,Map 或数组

【讨论】:

  • “javascript 不保证属性顺序”对于 ES6+ 来说并不完全正确
  • 如果您使用正确的对象迭代方法,在大多数情况下,在现代环境中,属性顺序得到很大保证。
  • 与上述问题无关
  • 这正是我需要magicFn 的原因:)
猜你喜欢
  • 1970-01-01
  • 2019-02-09
  • 2019-06-28
  • 2019-10-19
  • 1970-01-01
  • 2022-09-30
相关资源
最近更新 更多