我需要TypeScript泛型方面的帮助;如何访问ActionAdd
接口中的T["value"]字段?
type UserValue = { username: string; };
interface User {
id: number;
value: UserValue;
}
interface ActionAdd<T = unknown> {
type: "ADD";
value: T["value"]; // Type '"value"' cannot be used to index type 'T'.
}
type UserAction = ActionAdd<User>;
T
对象将始终具有{ value }
个关键点,不一定是unknown
类型-但该对象也将具有其他关键点.
我试过:
interface ActionAdd<T, K extends keyof T> {
type: "ADD";
value: T[K];
}
type UserAction = ActionAdd<User, "value">;
-哦,不.
interface ActionAdd<T = unknown> {
type: "ADD";
value: T extends { value: infer V } ? V : never;
}
type UserAction = ActionAdd<User>;