【发布时间】:2017-06-15 10:25:56
【问题描述】:
我尝试使用Non-null assertion operator,如我的代码下方的TypeScript official documentation. 所示:
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;
}
我预计只有在streetNumberComponent 不是null 时才能访问属性long_name()。但事实并非如此,我明白了:
TypeError: Cannot read property 'long_name' of null
请注意,以下代码可以正常工作:
address.streetNumber = streetNumberComponent && streetNumberComponent.long_name();
我正在使用:
- 打字稿:2.0.10
- 角度:2.3.1
- Angular CLI:1.0.0-beta.24
【问题讨论】:
-
streetNumberComponent!.long_name();写你的问题时那个感叹号是错字吗? -
这是 TypeScript
Non-null assertion operator。 -
哦,对了,我的错,在TS上没做过那么多哈哈。
标签: javascript angular typescript typeerror angular-cli