我的界面:

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;
}

但是,在使用该属性之前,必须始终确保该属性不为空。

09-05 22:04