Typescript使一个参数类型取决于其他参数

时间:2018-01-12 18:49:08

标签: javascript typescript

说我有

interface Action<T> {
    assignAction(key: keyof T, value: any): void;
}

T的类型为

{
    users: User[];
    accounts: Account[];
}

现在,在致电assignAction时,我想说传递users。所以这个动作是错误的:createAction('users', accounts)

但我不知道如何验证value,因为它的类型取决于您为key选择的内容。

1 个答案:

答案 0 :(得分:6)

您应该能够在assignAction函数中添加泛型来帮助描述这种关系。

interface Action<T> {
    assignAction<K extends keyof T>(key: K, value: T[K]): void;
}

然后,一旦您的Action实例被赋予泛型类型,它就会知道在您调用assignAction

时如何关联键和值之间的关系