首页
更多应用
Search
1
修改iview的标签为i-的形式而不是驼峰的形式
3,185 阅读
2
PHP微信和企业微信签名
2,932 阅读
3
在VUE中怎么全局引入sass文件
2,598 阅读
4
解决Macos下storm系列IDE卡顿的问题
2,427 阅读
5
vscode硬件占用较高解决方案
2,257 阅读
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
登录
/
注册
Search
标签搜索
react
js
vue
vscode
nodejs
项目
代码
webpack
工具
nginx
小程序
css
fastmock
eslint
npm
typescript
http
vue-cli3
git
浏览器
fastmock技术社区
累计撰写
107
篇文章
累计收到
25
条评论
首页
栏目
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
页面
更多应用
搜索到
1
篇与
的结果
2026-01-09
typescript提取一个对象的value作为枚举类型
在 TypeScript 中,假如你之前已经定义过一个对象,如const obj = { A: 1, B: 2, C: 3 }之后,你想定义一个函数,这个函数的入参就是上面的这个对象的值的其中一个,也就是function func(val: 1 | 2 | 3) {}此时,可以通过对象key取值方法来取obj对象的可能值作为枚举类型具体方法为步骤 1:修改对象的定义,在后面加上 as constconst obj = { A: 1, B: 2, C: 3 } as const; // 使用 `as const` 确保对象是只读的步骤 2:提取值的联合类型使用 typeof 和 keyof 提取对象的值作为联合类型:function func(val: typeof obj[keyof typeof obj]) {}解读typeof obj 获取 obj 的类型。keyof typeof obj 获取 obj 的所有键(即 "A" | "B" | "C")。typeof obj[keyof typeof obj] 获取 obj 的所有值的联合类型(即 1 | 2 | 3)。上面的代码有两个关键as const:将对象标记为只读,确保 TypeScript 推断出具体的字面量类型(如 1 而不是 number)。typeof MODES[keyof typeof MODES]:通过索引访问对象的值类型,生成联合类型 1 | 2 | 3。扩展:提取键的联合类型如果你还需要提取键的联合类型(如 "A" | "B" | "C"),可以这样做:type ModeKeys = keyof typeof MODES;总结通过 typeof 和 keyof,你可以轻松提取对象的键或值的联合类型。这种方法非常适合将常量对象转换为枚举类型,同时保持类型安全。如果你有其他问题,欢迎随时提问!
2026年01月09日
3 阅读
0 评论
0 点赞