Typescript无法推断函数参数

时间:2019-03-29 08:50:19

标签: typescript typescript-typings

所以我有这个函数,我想让typecsript从提供给函数的参数中推断类型,但它似乎不起作用。下面提供了一些代码。

type someTypeEnum = '1';
type someOtherTypeEnum = '2' | '3';
type combinedTypeEnum = someTypeEnum | someOtherTypeEnum;
type combinedTypeMap<T extends combinedTypeEnum> = T extends someTypeEnum ? number :
    T extends someOtherTypeEnum ? string : never;

export class ItemBalCore<T extends combinedTypeEnum, K extends combinedTypeMap<T>>  {
    public itemType: T;
    public itemTypeMap: K;
}

type itemBalType<T extends combinedTypeEnum, K extends combinedTypeMap<T>> =
    T extends someTypeEnum ? ItemBalCore<T, K> :
    T extends someOtherTypeEnum ? ItemBalCore<T, K> & { someOtherProp: string } :
    never;

function someFunction<T extends combinedTypeEnum, K extends combinedTypeMap<T>>
    (args: Pick<itemBalType<T, K>, 'itemType'>): Pick<itemBalType<T, K>, 'itemType'> {
    return { itemType: args.itemType }
};

const { itemType } = someFunction({ itemType: '1' }) // itemType inferred as combinedTypeEnum and not 1;
const { itemType } = someFunction({ itemType: '2', }) // itemType inferred as combinedTypeEnum and not 2;

在第const { itemType } = someFunction({ itemType: '1' })行,我期望itemType1,但我得到combinedTypeEnum。 在下一行类似。  我不确定为什么不对它起到任何帮助,将不胜感激。

谢谢

0 个答案:

没有答案