【问题标题】:How to get the keys of a typescript defined type? [duplicate]如何获取打字稿定义类型的键? [复制]
【发布时间】:2021-03-19 19:13:05
【问题描述】:

是否可以像我对对象所做的那样提取类型的“键”并保存使用它们(存储在变量中、映射等​​)?

考虑对象变体:

const obj = { 0: 'a', 1: 'b', 2: 'c' };
const objWithKeys = Object.keys(obj); 
console.log(objWithKeys); // console output: ['0', '1', '2']

我可以以某种方式对一个类型执行相同的操作,然后将这些键用于下拉菜单之类的东西吗?

type scheme = "dhcp" | "static";
const schemeItems = Object.keys(scheme); 
const console.log(schemeItems); // would like to have ["dhcp","static"]

这是否可能以某种方式获得所需的结果,如果不能,您应该怎么做?

【问题讨论】:

  • 你只能从一个值中派生出一个类型,而不是反过来:const SCHEME = ["dhcp", "static"] as const; type Scheme = typeof SCHEME[number]
  • @AlekseyL。对我来说似乎是对的,但您能解释一下为什么将 [number] 添加到 typeof SCHEME 作业中吗?
  • [number] 用于查询元组的项目类型(获取所有值的并集)

标签: typescript


【解决方案1】:

更新

在 TypeScript 中是不可能的,因为type 作用域和variables 作用域是不同的作用域。

你甚至可以为变量和类型定义相同的名称,它会工作得很好

type age=number;
const age = 'efr'.

【讨论】:

  • 控制台日志中不能使用任何类型
  • 感谢您的回复。您的示例工作正常,但不是我打算做的。我想提取该类型的键,例如将其存储在变量中并将其用于下拉菜单中的项目。 (编辑我的问题)
猜你喜欢
  • 2022-11-02
  • 1970-01-01
  • 2019-01-02
  • 2022-01-25
  • 2021-01-22
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多