如何为React中类似Map的get函数添加TypeScript类型标注?
为箭头函数添加TypeScript类型标注
针对你给出的函数,最贴合功能且类型精准的方式是使用泛型来标注,既能保留对象和键的具体类型信息,又符合TypeScript的类型约束要求:
const mapLikeGet = <T extends object, K extends keyof T>(obj: T, key: K): T[K] | undefined => { if (Object.prototype.hasOwnProperty.call(obj, key)) return obj[key] }
类型说明:
<T extends object, K extends keyof T>:定义两个泛型参数,T约束为任意对象类型,K约束为T的所有键类型,确保传入的key一定是obj上可能存在的键obj: T:第一个参数标注为泛型对象类型Tkey: K:第二个参数标注为T的键类型KT[K] | undefined:返回值标注为T中key对应的值类型,或者undefined(因为当key不存在时函数没有返回值)
如果不需要这么精准的类型,也可以用更宽泛的标注方式,但会丢失具体类型信息:
const mapLikeGet = (obj: Record<string, unknown>, key: string): unknown | undefined => { if (Object.prototype.hasOwnProperty.call(obj, key)) return obj[key] }
这种方式下,obj被标注为键是string、值是unknown的对象,key是string类型,返回值是unknown或undefined。
内容的提问来源于stack exchange,提问作者Byron Cox
相关产品推荐
相关产品推荐

