说我有
interface Action<T> {
assignAction(key: keyof T, value: any): void;
}
说
T
是类型{
users: User[];
accounts: Account[];
}
现在,当调用
assignAction
时,我想说通过users
。所以这个 Action 是错误的:createAction('users', accounts)
。但是我不知道如何验证
value
,因为它的类型取决于您为key
选择的内容。 最佳答案
您应该能够向assignAction
函数添加泛型以帮助描述这种关系。
interface Action<T> {
assignAction<K extends keyof T>(key: K, value: T[K]): void;
}
然后,一旦为
Action
实例指定了通用类型,它便会在调用assignAction
时知道如何关联键和值之间的关系