说我有
interface Action<T> {
assignAction(key: keyof T, value: any): void;
}
说T
的类型为
{
users: User[];
accounts: Account[];
}
现在,在致电assignAction
时,我想说传递users
。所以这个动作是错误的:createAction('users', accounts)
。
但我不知道如何验证value
,因为它的类型取决于您为key
选择的内容。
答案 0 :(得分:6)
您应该能够在assignAction
函数中添加泛型来帮助描述这种关系。
interface Action<T> {
assignAction<K extends keyof T>(key: K, value: T[K]): void;
}
然后,一旦您的Action
实例被赋予泛型类型,它就会知道在您调用assignAction