我有以下过于简化的代码片段:
type a = 'a' | 'b';
const fn = <T extends a>(param: T): T => {
switch(param) {
case 'a':
return 'a' as T;
case 'b':
return 'b' as T;
}
};
我不明白,为什么编译器抱怨缺少返回,并且有没有一种方法可以解决它,这是面向未来的(例如,不添加默认情况,我想确保所有情况都得到显式处理,所以如果在未来类型会扩展,我确实希望它失败)
当我删除泛型时它起作用,但在我的场景中,返回类型在 T 上是泛型
在默认子句中抛出错误会让打字稿高兴
type a = 'a' | 'b';
const fn = <T extends a>(param: T): T => {
switch(param) {
case 'a':
return 'a' as T;
case 'b':
return 'b' as T;
default:
throw 'Invalid param'
}
};