我的界面:
export interface MapMarker{
longitude: number,
latitude: number,
popupText: string
}
我的组成部分
mapMarker: MapMarker;
ngOnInit() {
this.mapMarker.latitude = location.coords.latitude;
this.mapMarker.longitude = location.coords.longitude;
this.mapMarker.popupText = "Your current Location"
}
这告诉我不能设置未定义的纬度。我知道为什么。这是因为mapmarker有一个类型mapmarker,但未定义,因为它在默认情况下未定义。我该怎么办?如果我尝试
mapMarker: MapMarker = null;
仍然是错误的。我还尝试了
mapMarker: MapMarker = {};
,这会导致以下错误=Type '{}' is missing the following properties from type 'MapMarker': longitude, latitude, popupText
我需要解决方案,但我不想使用“任何”类型。
最佳答案
如果不希望每次都创建对象并指定默认值,请改用具有默认值的类作为其属性。如果不指定值,则将根据属性类型使用默认值。
export class MapMarker {
longitude: number = 0;
latitude: number = 0;
popupText: string = '';
}
然后,您可以简单地创建类的实例,并且每个字段都将正确初始化:
mapMarker: MapMarker = new MapMarker();
如果要保留接口,只需在类中实现它:
export interface IMapMarker {
longitude: number;
latitude: number;
popupText: string;
}
export class MapMarker implements IMapMarker {
longitude: number = 0;
latitude: number = 0;
popupText: string = '';
}
如果某些属性是可选的,请为它们使用可选运算符:
export interface IMapMarker {
longitude?: number;
latitude?: number;
popupText?: string;
}
但是,在使用该属性之前,必须始终确保该属性不为空。