所以我有这个函数,我想让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' })
行,我期望itemType
为1
,但我得到combinedTypeEnum
。
在下一行类似。
我不确定为什么不对它起到任何帮助,将不胜感激。
谢谢