gpt4 book ai didi

javascript - `?` 在某些对象属性之前是什么意思?为什么我的 ts 文件不接受它?

转载 作者:行者123 更新时间:2023-12-03 09:42:17 25 4
gpt4 key购买 nike

我一直使用这种行为以 Angular 展示在这里*ngIf当我有一个可能未定义或所需对象以外的对象时的指令

<div *ngIf="object?.foo">
...
</div>

我知道这有效,但不知道为什么...

但是当我尝试在我的 TypeScript 中的 if 上使用它时像下面的 angular 文件给我两个不同的错误 TS1005, TS1109 ,在我尝试使用此行为的每一行上交替使用。
if(object?.foo){} // error TS1109
if(object?.foo){} // error TS1005
if(object?.foo){} // error TS1109
if(object?.foo){} // error TS1005

我在这个项目中使用 Angular 7.3.9

最佳答案

它在您的模板中工作的原因是因为 angular 会将其计算为以下表达式:

<div *ngIf="object && object.foo">

如果对象为空,这将防止在对象上调用属性的错误。

文档链接: https://angular.io/guide/template-syntax#the-safe-navigation-operator----and-null-property-paths

它在组件的 typescript 部分不起作用,因为 typescript 不支持它。

唯一使用 ? typescript 中的变量是指定方法的参数是可选的:
function myFunc(mandatoryParam: any, optionalParam?: any) {
...
}

myFunc('hello'); // Will work
myFunc('hello', 'world'); // Will work too

正如对此答案的评论中所述,TypeScript 将在 3.7 版本中添加对 angular 模板语法的支持: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#optional-chaining

关于javascript - `?` 在某些对象属性之前是什么意思?为什么我的 ts 文件不接受它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60452461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com