打字稿泛型约束不起作用

时间:2020-10-22 06:44:29

标签: typescript

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

0 个答案:

没有答案