【发布时间】:2022-01-18 01:00:56
【问题描述】:
我正在尝试将属性的类型映射到其对应的构造函数类型,所以 string 应该变成 StringConstructor,number 应该变成 NumberConstructor...
这是我目前得到的,但智能感知显示 unknown 用于 test.name?.type 和 test.age?.type
interface IPerson {
name?: string
age?: number
}
const test = {
name: { type: String },
age: { type: Number },
} as { [key in keyof IPerson]: {
type: IPerson[key] extends string
? StringConstructor
: IPerson[key] extends number
? NumberConstructor
: unknown
}}
console.log(test.name?.type) console.log(test.age?.type)
console.log(test.name?.type)
console.log(test.age?.type)
我需要更改什么才能正确映射type?
【问题讨论】:
-
请注意,您的
key是一个type 参数,代表一个keylike type;它不是虚拟键 name。因此,将其命名为类型参数(一个或两个大写字符,如K,或者最坏的情况下为大写类型名称,如Key)而不是键名更为传统。
标签: typescript typescript-typings