javascript - Angular @input-eiendom som slutter med utropstegn?


Denne kildekoden har @Input-egenskaper som slutter med en !. Her er et eksempel:

@Input() token!:StripeToken

Hvorfor er det nyttig å ha ! i dette tilfellet? Noen av kommentarene har påpekt at det er en ikke-null-assertionsoperator, men hvorfor er det nyttig (eller kanskje ikke nyttig) å ha det i denne spesifikke situasjonen?

Jeg tror svaret på dette er at for Angular @Input-egenskaper gir det aldri mening å ha ikke-null-påstanden på slutten av egenskapen, men jeg ville se hva resten av dere tenkte?

Oppdater

Jeg prøvde det på et nytt Angular-prosjekt, og jeg får denne feilen:

En definitiv tildelingspåstand '!' er ikke tillatt i denne konteksten.ts(1255)

Så jeg tror ikke det noen gang gir mening å inkludere !-operatoren på en @Input-egenskap. Her er et skjermbilde:

Svar #1

De bruker kompilatoralternativet strictPropertyInitialization slik at enhver klasseegenskap som ikke er erklært med typen undefined og ikke er initialisert direkte eller i en konstruktør gir feilen TS2564.

For å forhindre denne kompilatorfeilen bruker de den definitive tildelingspåstandsmodifikatoren som forteller TypeScript

... at en variabel faktisk er tildelt for alle praktiske formål, selv om TypeScripts analyser ikke kan oppdage det.

Demo

Videre lesing: https://mariusschulz.com/blog/strict-property-initialization-in-typescript#solution-4-definite-assignment-assertion

Når det gjelder oppdateringen din

Du spesifiserte ikke en type for title-variabelen i eksemplet ditt, derfor får du feilen TS1255. Å bruke ! i denne sammenhengen er mulig og gir mening!

Relaterte artikler