Я пытался использовать Non-null assertion operator
, как показано на TypeScript official documentation. Ниже мой код:Машинопись: не может прочитать свойство «параметра long_name» нулевых
let streetNumberComponent = this.getAddressComponent(addressComponents, 'street_number');
address.streetNumber = streetNumberComponent!.long_name();
...
public getAddressComponent(addressComponents: Array<any>, type: string): any {
addressComponents.filter(component => {
let types : Array<string> = component.types;
if(_.includes(types, type)) {
return component;
}
});
return null;
}
Я ожидал, что свойство long_name()
будет доступен только если streetNumberComponent
не null
. Но это не так, и я получаю:
TypeError: Cannot read property 'long_name' of null
Обратите внимание, что следующий код работает правильно:
address.streetNumber = streetNumberComponent && streetNumberComponent.long_name();
Я использую:
- Машинопись: 2,0. 10
- Угловой: 2.3.1
- Угловой CLI: 1.0.0-beta.24
'streetNumberComponent! .long_name();' Этот восклицательный знак является опечаткой при написании вашего вопроса? –
Это оператор 'Non-null assertion' типа TypeScript. –
О, хорошо, мой плохой, не так много сделал на TS ха-ха. –