TypeScript 里如何提取一个对象数组里的一个变量类型?

作者站长头像
站长
· 阅读数 9

问题背景:如下图,我有个数组,是一个常量

const tabList = [
  { label: "攻略", name: "playground" },
  { label: "商城", name: "store" },
  { label: "论坛", name: "topic" },
  { label: "用户", name: "user" },
]

我现在想定义一个变量 current ,我想这个变量的值是 label 这四个字符串的其中一个。

我了解到,我可以重新声明一个 type Tab = "攻略"|"商城"... 这样一个类型,然后给 tabListcurrent 分别使用。

但是有没有一种方法直接让 Ts 提取出 tabListlabel 元素自动提取呢?有点类型体操的感觉

回复
1个回答
avatar
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 "用户"
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容