说我有

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时知道如何关联键和值之间的关系

09-25 18:15