【发布时间】:2025-12-17 01:15:01
【问题描述】:
在某些情况下,我想扩大按字面转换的对象的类型(使用“as const”),因此它的属性将被推断为字符串或数字,而不是字面意义上的。
假设我有以下类型
const obj = [
{
type:"student",
name:"Yossi"
},
{
type: "Teacher",
name: "Lili"
}
] as const
type Person = typeof obj [number]
我希望从字面上推断 obj 的类型,但 Person 要更宽,所以它的类型和名称是字符串。是否有一个泛型可以允许以下内容:
type Person = Widen<typeof obj [number]>
【问题讨论】:
-
不太可能。用例是什么?实际上,每个属性只有两个可能的值。 TypeScript 可以正确推断窄类型。
-
@MadaraUchiha,我希望有一个组件(函数)可以接受并专门处理学生和老师,因此只能接受 obj 的值,以及另一个更广泛的组件/函数,并且可以接受任何人,无论他的职业是什么。
-
有人介意我在这里将“加宽”编辑为“加宽”吗?
-
@jcalz,我修好了。无论如何,我不是以英语为母语的人,所以如有必要,请随时纠正或建议。
标签: typescript