Typescript,如何从另一个属性值推断类型?
例如,我有一个带有属性的接口:Typescript,如何从另一个属性值推断类型?,typescript,Typescript,例如,我有一个带有属性的接口:key和value,我想通过键推断值类型 接口对象{a:number;b:string} 接口参数{ 关键字:K value:Obj[K]//我想推断这个类型 } 常数p:Param={ 键:“a”, 值:“”,//typescript无法推断此类型,应为数字 } 我该怎么做呢?Obj[K]是指可以通过索引Obj通过K中的任何值获得的值,而不仅仅是键 因此,要使用此结构,您需要指定哪个键使用得更紧密: interface Obj { a: number; b: s
key
和value
,我想通过键推断值类型
接口对象{a:number;b:string}
接口参数{
关键字:K
value:Obj[K]//我想推断这个类型
}
常数p:Param={
键:“a”,
值:“”,//typescript无法推断此类型,应为数字
}
我该怎么做呢?
Obj[K]
是指可以通过索引Obj
通过K
中的任何值获得的值,而不仅仅是键
因此,要使用此结构,您需要指定哪个键使用得更紧密:
interface Obj { a: number; b: string }
interface Param<K extends keyof Obj> {
key: K
value: Obj[K]
}
const p: Param<'a'> = { // changed line
key: 'a',
value: '', // error
}
如果您需要变量p
能够保持键
,但仍然保持值
为正确类型,则这是唯一有效的方法
interface AParam {
key: 'a'
value: number
}
interface BParam {
key: 'b'
value: string
}
type Param = AParam | BParam;
const p: Param = {
key: 'a',
value: '', // error
}