Typescript 类型体操
Typescript 类型体操
在网上看了一圈资料,类型体操的大致思路就是
通过extends结合三元运算符去判断与选择,通过never去过滤,通过keyof、obj[key] 去提取等等,通过这些运算最终得到更细粒度的类型值
指定类型为某一个值
// ts判断类型
type isNumber<T> = T extends Number ? true : false
type isTrue = isNumber<1>
type getTrue = (n: Number) => isTrue
const fnGetTrue: getTrue = (n: Number) => {
return true
}
fnGetTrue(1)
指定对象的键和值
// ts 指定对象的键和值
type obj = {
name:'island',
age:25
}
type keysOfObj = keyof obj // type keysOfObj = "name" | "age"
type valuesOfObj = obj[keysOfObj] // type valuesOfObj = "island" | 25
筛选出对象的某一类型的值
type filterNumVal<T extends Object> = {
[Key in keyof T]: T[Key] extends Number ? T[Key] : never
}[keyof T]
type getNumType = filterNumVal<{ island: 1, key2: 666, key3:'key3' }> // type getNumType = 1 | 666
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具