Raj*_*one 4 typescript angular
我不是在考虑?:(三元运算符)。有时我在YouTube教程中观看人们在使用?。HTML页面中的运算符,有时它们在TS(typescript)页面中使用?:。我不清楚它们到底有什么不同?
所以使用?有区别吗?在Angular中,这是您可能会引用的三种用法。
安全操作员
当在HTML中设置带有问号的值时,这是安全的检查,因此在访问变量之前先检查其是否已定义。(尝试访问值不存在将导致错误)。
下面的代码段将this.example在检查文本之前检查其值,这将导致错误。如果在未定义的情况下访问文本,则几乎可以确保不需要的行为。
<p>{{example?.text}}</p>
Run Code Online (Sandbox Code Playgroud)
这可以确保一切安全,要了解有关安全运算符的更多信息,请阅读此处的Angular文档。
可选参数
我认为您正在寻找的下一个用途是函数/接口中的可选值。这意味着,如果接口exampleValue现在不定义为,则如果不调用而不会引发错误。
export interface Itest
{
exampleValue?: string; // optional
neededValue: string; // non-optional
}
Run Code Online (Sandbox Code Playgroud)
或在函数内,如果没有可选的指示符(?),则调用函数时将发生错误。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.
}
Run Code Online (Sandbox Code Playgroud)
有关此示例的更多示例,请参见这篇有关可选参数的简短文章。
条件(三元)运算符
问题不是要寻找这个问题,而是认为将它弹出是?可以使用的另一种情况。
在打字稿中看到时,您可以在(if / else)类似这样的条件三元语句中使用它。
<p>{{example?.text}}</p>
Run Code Online (Sandbox Code Playgroud)
这与编写以下语句相同。
export interface Itest
{
exampleValue?: string; // optional
neededValue: string; // non-optional
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2080 次 |
| 最近记录: |