例如,我有这样的类型:
type ActionResource = {
type: "QUERY";
payload: IListPayload;
} | {
type: "GET";
payload: {
id: string;
};
} | {
type: "QUERY_NEXT";
} | {
type: "SAVE";
payload: {
id: string;
data: any;
};
} | {
type: "SEARCH_TEXT";
payload: {
...;
};
}
现在,我想获得具有type
属性="SAVE"的特定类型所以我很喜欢这个
type GetActionResourceType<K extends ActionResource['type']> = ActionResource
type SaveType = GetActionResourceType<'SAVE'>
我希望它会返回SaveType的类型,看起来像:
{
type: "SAVE";
payload: {
id: string;
data: any;
}
如何在我的目标中制作GetActionResourceType
您只需使用Extract
(请参阅文档中的预定义条件类型(条件类型即可提取扩展特定类型的类型:
type GetActionResourceType<K extends ActionResource['type']> = Extract<ActionResource, { type: K }>