鉴于enum看起来像这样:
export enum UsedProduct {
Yes = 'yes',
No = 'no',
Unknown = 'unknown',
}
Run Code Online (Sandbox Code Playgroud)
我想写一个函数,它接受一组字符串文字并返回一个实例UsedProduct.到目前为止,我写了一个这样的函数:
export function parseUsedProduct(usedProdStr: 'yes' | 'no' | 'unknown'): UsedProduct {
switch (usedProdStr) {
case 'yes':
return UsedProduct.Yes;
case 'no':
return UsedProduct.No;
case 'unknown':
return UsedProduct.Unknown;
default:
return unknownUsedProductValue(usedProdStr);
}
}
function unknownUsedProductValue(usedProdStr: never): UsedProduct {
throw new Error(`Unhandled UsedProduct value found ${usedProdStr}`);
}
Run Code Online (Sandbox Code Playgroud)
这个实现并不是很好,因为我必须重新定义枚举的可能值.如何重写此功能以便我不必定义'yes' | 'no' | 'unknown'?