typescript 覆盖函数中所有可能的取值情况,仍有“返回类型不包括'未定义'”

rqcrx0a6  于 2022-11-26  发布在  TypeScript
关注(0)|答案(1)|浏览(113)

下面是一个简化的Typescript函数:

function x(y: 1 | 2 | 3) : string {
  if (y === 1) return "a";
  if (y === 2) return "b";
  if (y === 3) return "c";
}

Typescript检查器返回此错误:
函数缺少结束return语句,并且返回类型不包括“undefined”
我可以在最后一行写else或只写return "c",但它可能被认为是不太明确的(在本例中,这是可以的,但考虑到它可能是一个更复杂的函数,需要更明确地说明其特定条件。
有没有办法告诉 typescript 我涵盖了所有的情况下没有使用elsereturn "c"

n53p2ov0

n53p2ov01#

尝试使用switch语句:

function x(y: 1 | 2 | 3) : string {
    switch (y) {
        case 1:
            return "a";
        case 2:
            return "b";
        case 3: 
            return "c";
    }
}

链接到Playground。

相关问题