【发布时间】:2021-02-26 22:08:41
【问题描述】:
目前我的应用程序上确实有以下接口。是否可以根据键值创建记录类型PropA。
例如:如果我将"apple" 作为记录键传递,它将期望IApple 接口的值,否则它将期望IModel。
interface Itest {
propsA: Record<string,IModel>
}
【问题讨论】:
-
您必须在代码
type Map = { apple: IApple; model: IModel }的某处将名称映射到类型。你有吗? -
我可以添加那个映射,你能详细说明我如何使用这个映射吗?
-
当你说“通过“苹果”作为记录键”你是什么意思?你的意思是你希望它是通用的,比如
Itest<"apple">有propsA: Record<string, IApple>?或者你的意思是propsA本身就是一个像{ apple: IApple; model: IModel }这样的对象?在第二种情况下,您根本不需要Record类型。就像上一条评论一样,它只是interface Itest { propsA: Map }和Map。 -
propsA: Record
-> 如果 {string} 值为“apple”,IModel 应该是 IApple 的类型,否则 IModel。 -
IApple是IModel的子类型还是完全不同?如果它们不同,那就很难了。如果它是一个子类型就简单了。
标签: typescript