javascript 如何根据判别式缩小返回类型

jrcvhitl  于 2023-02-11  发布在  Java
关注(0)|答案(2)|浏览(94)

假设我有一个参数只能取两个值type Value = "a" | "b"的函数,现在我有一个基于该参数值的函数,它应该返回一个不同的结果:

type Value = "a" | "b";

function Method(value: Value){
  if(value === "a") return 1000;
  else return "word"
}

const Result = Method("a");

理论上,如果我的值是“a”(当用常量值“a”调用函数时可以推断出),我将返回一个数字;如果值是“b”,我期望返回一个字符串。
这段代码有什么问题?我怎样才能使它正常工作?

hpcdzsge

hpcdzsge1#

可以按如下方式使用函数重载:

type Value = "a" | "b";

function Method(value: "a"): number;
function Method(value: "b"): string;
function Method(value: Value){
  if(value === "a") return 1000;
  else return "word";
}

const Result = Method("a");
hgc7kmma

hgc7kmma2#

您可以在以下两个值中使用switch语句代替if and only acct语句:

switch (value) {
  case 'a':
    return 1000;
  case 'b':
    return 'word'
}
return null; //in case the value falls out the expected values but this is optional

相关问题