泛型T keyof
// extends function A<T>(a:T,b:T) { // return a+b // 此时提示报错,因为不是任何类型都可以接受+,所以此时加号不安全 } // 通过泛型extends数字类型,number能够接收+,所以不会报错 function B<T extends number>(a:T,b:T) { return a+b } // interface泛型添加extends interface D { length: string } function C<T>(a:T) { // a.length // 此时length报错,因为不确定有length属性 } function E<T extends D>(a:T) { a.length } // keyof是取属性 const F = { name: 'ffff', age: 234 } type key = typeof F // key = { // name: string, // age: number // } type key1 = keyof typeof F // key1 = 'name' | 'age' function ob<T extends Object, K extends keyof T>(obj: T, b: K) { // K extends keyof T 代表 K的类型限制是T的属性名,所以obj[b]不会报错,如果不做限制则报错 return obj[b] } // 使用keyof做泛型工具 interface obj { name: string, age: number } // 做一个传入接口,自动把所有属性修改为 属性?:类型 // 这里用了for(let key in obj)语法,key代表遍历的值 type Options<T extends object> = { [Key in keyof T]?: T[Key] } type B = Options<obj> // B = { // name?: string | undefined, // age?: number | undefined // }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现