type PossibleValues = 'a' | 'b';
type Convert<T extends PossibleValues> = T extends 'a' ? string : number;
function myFunc<T extends PossibleValues>(param1: T): Convert<T> {
if (param1 === 'a') {
return 'someString'; // why can't I return a string?
} else {
return 0; // why can't I return a number?
}
}
const testString = myFunc('a'); // type is string
const testNumber = myFunc('b'); // type is number
Typescript泛型在上述情况下不起作用。我正在尝试根据某些条件返回字符串或数字,但是ts返回时会引发错误。
奇怪的是,诸如testString和testNumber的变量获得了正确的类型定义。感谢您的帮助
TS游乐场link