如何在`or`运算符定义中获取特定类型?

时间:2018-11-05 03:48:06

标签: typescript functional-programming

例如,我输入类似这样的提示:

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

1 个答案:

答案 0 :(得分:1)

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

newlist = [int(ch) for ch in list(s[2:])]
                # [1, 0, 1, 0, 0]