首页 > 解决方案 > 之间的确切区别是什么?和?:角度运算符

问题描述

我没有考虑?:(三元运算符)。有时我正在观看人们正在使用的 YouTube 教程HTML 页面中的运算符,有时他们在 TS(typescript) 页面中使用?: 。我不太清楚它们到底有什么不同?

标签: angulartypescript

解决方案


所以使用 ? 在 Angular 中,您可能会参考以下三种使用方式。

安全操作员

当您在 HTML 中设置一个带有问号的值时,这是一种安全检查,因此您在访问变量之前检查该变量是否已定义。(尝试访问不存在的值将导致错误)。

下面的代码片段会this.example在检查会导致错误的文本之前检查是否有一个值。如果在未定义的情况下访问文本,这几乎可以确保出现不需要的行为。

<p>{{example?.text}}</p>

这可以确保一切安全,要阅读有关安全操作员的更多信息,请阅读此处找到的 Angular 文档

可选参数

我认为您正在寻找的下一个用途是函数/接口中的可选值。这意味着如果在没有 的情况下调用该接口将不会引发错误,exampleValue因为它现在已被定义为可选。

export interface Itest
{
 exampleValue?: string; // optional
 neededValue: string; // non-optional
}

或者在一个函数中,如果没有可选指示符 ( ?),如果调用该函数,则会发生错误。this.exampleFunction();

public exampleFunction(test?): void 
{
  console.log(test);
  // this function can be called with or without test being passed in without causing an error.
}

可以在这篇关于可选参数的简短文章中找到更多示例

条件(三元)运算符

问题不是在寻找这个,而是认为将其作为另一种?可以在使用中看到的情况将其弹出是有意义的。

当在打字稿中看到时,您可以在(if / else)看起来像这样的条件三元语句中使用它。

const example = 'hello';
console.log(example === 'hello' ? 'im true' : 'im false');

这与编写以下语句相同。

    const example = "hello";
    
    if (example === 'hello')
    {
      console.log('im true');
    }else 
    {
      console.log('im false');
    }

可以在此处找到更多信息和条件(三元)运算符的用法。


推荐阅读