首页 > 解决方案 > 解码打字稿三元运算符

问题描述

我在打字稿文档中遇到了一些让我感到困惑的代码。

function compare(a: string, b: string): -1 | 0 | 1 {
  return a === b ? 0 : a > b ? 1 : -1;
}

任何人都可以解释退货声明中发生了什么吗?那是三元运算符吗?

标签: javascripttypescript

解决方案


可以这样想:

function compare(a: string, b: string): -1 | 0 | 1 {
  return a === b ? 0 : (a > b ? 1 : -1);
}

如果a === b,则返回 0。否则,是a > b? 如果是,则返回 1。否则,返回 -1。可能更容易想到这样:

function compare(a: string, b: string): -1 | 0 | 1 {
  if (a === b) {
    return 0;
  } else {
    if (a > b) {
      return 1;
    } else {
      return -1;
    }
}

虽然我是这么想的,但这是我用 if 语句编写代码的方式(记住,这三个都是等价的):

function compare(a: string, b: string): -1 | 0 | 1 {
  if (a === b) {
    return 0;
  } else if (a > b) {
    return 1;
  } else {
    return -1;
  }
}

推荐阅读