gpt4 book ai didi

javascript - Angular @input 属性以感叹号结尾?

转载 作者:行者123 更新时间:2023-12-05 00:26:39 35 4
gpt4 key购买 nike

这个source code@Input! 结尾的属性.这是一个例子:

@Input() token!:StripeToken

为什么拥有 ! 很有用在这种情况下?一些评论指出它是一个非空断言运算符,但为什么在这种特定情况下它有用(或者可能没用)?

我认为这个问题的答案是对于 Angular @Input在属性末尾具有非空断言的属性永远没有意义,但我想看看你们其他人是怎么想的?

更新

我在一个新的 Angular 项目上尝试过,我收到了这个错误:

A definite assignment assertion '!' is not permitted in this context.ts(1255)



所以我认为包含 ! 是没有意义的。 @Input 上的运算符属性(property)。这是一个屏幕截图:

enter image description here

最佳答案

他们使用编译器选项 strictPropertyInitialization 所以任何未用类型声明的类属性 undefined并且未直接初始化或在构造函数中初始化会产生错误 TS2564。

enter image description here

为了防止这个编译器错误,他们使用 definite assignment assertion modifier这告诉 TypeScript

... that a variable is indeed assigned for all intents and purposes, even if TypeScript’s analyses cannot detect so.



enter image description here

Demo

进一步阅读: https://mariusschulz.com/blog/strict-property-initialization-in-typescript#solution-4-definite-assignment-assertion

关于你的更新

没有为 title 指定类型变量 在您的示例中,这就是您收到错误 TS1255 的原因。使用 !在这种情况下是可能的并且是有道理的!

关于javascript - Angular @input 属性以感叹号结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59093938/

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