【发布时间】:2021-08-17 00:25:21
【问题描述】:
我想有条件类型,某物是一个对象。
type Id = {
id: number
obj: {
x: 5
}
}
type ObjString<T> = {
[P in keyof T]:
T[P] extends Object ? string : T[P]
}
const f: ObjString<Id> = {
id: 4,
obj: "xxxx"
}
在这里,obj 属性已正确映射到 f 对象中的字符串,但对于 id 属性,我会收到以下错误消息:
error TS2322: Type 'number' is not assignable to type 'string'.
这意味着T[P] extends Object 对于number 被评估为真。我应该如何构造条件,所以 number 将评估为 false,而 object 将评估为 true?
【问题讨论】:
标签: typescript conditional-types