我不是在想?:(三元运算符)。有时我在YouTube教程中看到,人们在HTML页面中使用?.运算符,有时在TS(typescript)页面中使用?:。我不太清楚它们到底有什么不同?
发布于 2019-02-22 04:41:41
所以在使用?在Angular中,这里有三种你可能会提到的用法。
safe-operators
当您在HTML中设置一个带有问号的值时,这是一种安全检查,因此您需要在访问变量之前检查变量是否已定义。(尝试访问不存在的值将导致错误)。
下面的代码片段将在检查文本之前检查this.example
是否有值,这将导致错误。如果在未定义的情况下访问文本,这几乎可以确保不需要的行为。
<p>{{example?.text}}</p>
这保证了一切安全,要了解更多关于安全操作员的信息,请阅读Angular文档found here
可选参数
下一个用法是函数/接口中的可选值,我想这就是您要找的。这意味着如果在没有exampleValue
的情况下调用该接口,它将不会抛出错误,因为它现在已被定义为可选的。
export interface Itest
{
exampleValue?: string; // optional
neededValue: string; // non-optional
}
或者在没有可选指示符(?
)的函数内,如果函数被调用为like,则会发生错误。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.
}
在这篇关于Optional Parameters的短文中可以找到更多这样的例子
条件(三元)运算符
这个问题并不是在寻找这个问题,而是认为将其弹出是有意义的,因为这是另一个可以看到?
正在使用的情况。
当在typescript中看到它时,您可以将其用于条件三元语句(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');
}
有关条件(三元)运算符的更多信息和用法,请参阅here.
发布于 2019-02-22 04:48:43
?.
是一个safe-navigation operator。它只是使它在前面的值为null时不会抛出错误。有一些具体的细节在起作用,但它基本上可以被认为是一个检查null的三元表达式。
<div>{{item?.value}}</div>
..。大致相同于:
<div>{{item ? item.value : null}}</div>
https://stackoverflow.com/questions/54815790
复制相似问题