TypeScript 里如何提取一个对象数组里的一个变量类型?
问题背景:如下图,我有个数组,是一个常量
const tabList = [
{ label: "攻略", name: "playground" },
{ label: "商城", name: "store" },
{ label: "论坛", name: "topic" },
{ label: "用户", name: "user" },
]
我现在想定义一个变量 current
,我想这个变量的值是 label
这四个字符串的其中一个。
我了解到,我可以重新声明一个 type Tab = "攻略"|"商城"...
这样一个类型,然后给 tabList
和 current
分别使用。
但是有没有一种方法直接让 Ts
提取出 tabList
的 label
元素自动提取呢?有点类型体操的感觉
回复
1个回答
test
2024-07-03
const tabList = [
{ label: "攻略", name: "playground" },
{ label: "商城", name: "store" },
{ label: "论坛", name: "topic" },
{ label: "用户", name: "user" },
] as const;
type TabList = typeof tabList;
type Label = TabList[number]["label"];
let current: Label; // Now, current can only be "攻略", "商城", "论坛", or "用户"
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容