0

例如我有这样的打击类型:

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我的目的

4

1 回答 1

1

您可以只使用Extract(参见文档中的预定义条件类型)条件类型来提取扩展特定类型的类型:

type GetActionResourceType<K extends ActionResource['type']> = Extract<ActionResource, { type: K }>
于 2018-11-05T05:07:19.087 回答