从对象中提取属性类型

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

是否可以获取类型

type Values = [number, boolean, string]

来自这个物体?

const o = {
  fst: 1,
  snd: true,
  trd: '',
}

我已经尝试过这个,但我想要的是数组类型,而不是联合类型。

type O = typeof o
type Values = O[keyof O]
  // Values = string | number | boolean
typescript
1个回答
0
投票

如果我正确理解你的问题,这段代码应该创建一个来自

[number, boolean, string]
对象的
o
类型。

const o = {
  fst: 1,
  snd: true,
  trd: '',
};

type O = typeof o;

type ValueTypes<T> = {
  [K in keyof T]: T[K]
};

type Values = ValueTypes<O>[keyof O][];

const valuesArray: Values = [1, true, ''];

console.log(valuesArray);
© www.soinside.com 2019 - 2024. All rights reserved.