P in keyof any用法问题
来源:10-17 【高级类型 Record 真实应用】 异步数据扁平化 的实现【 实现方式2】

F_Gump
2021-10-11
这样写不行么?不一定非要用[P in keyof any]: T
吧?
type MyRecord<T> = {
[index: string]: T
}
写回答
2回答
-
无心殿下
2021-11-15
type MyRecord<T> = Reocrd<T[keyof T], T>;这样写,类型约束更好
00 -
keviny79
2021-10-11
// [P in keyof any]这样写更适合Record的特点,因为Record存储的key 有变数,
// 1 修改更方便 2. 适应场景更多
// 1.修改更方便 ==>泛型个数增加灵活
type MyRecordExt<T, M> = {
[P in keyof M]: T
}
// 2.1 适应场景更多
let all: MyRecordExt<Car, any> = {}
// 2.2 适应场景更多
type CarBrandSort = {
"铃木": number,//数量
"丰田": number
}
type Car = { id: number, price: number, brandno: string }
// 2.2 适应场景更多
let record: MyRecordExt<Car, CarBrandSort> = {
"铃木": { id: 1, price: 100000, brandno: "雨燕" },
"丰田": { id: 2, price: 500000, brandno: "凯美瑞" }
}
00
相似问题