打字稿界面

时间:2017-09-19 13:27:04

标签: angular google-maps typescript

我有一个打字稿界面:

export interface LatLng {
  constructor(lat: number, lng: number): void;
  lat(): number;
  lng(): number;
}

具有LatLng类型的数组:

path: Array<LatLng>;

如何将元素推送到此数组?

2 个答案:

答案 0 :(得分:2)

实施界面

export class LatLngNew implements LatLng {
 constructor(public lat: number, public lng: number) {}
}

你可以这样写

this.path.push(new LatLngNew(2,3))

您也可以像这样定义数组类型

path: LatLng[];

答案 1 :(得分:1)

如果你只有一个界面,那么你不应该有constructor,它应该是这样的:

export interface LatLng {
    lat(): number;
    lng(): number;
}

然后你可以像这样推送一个新项目:

path.push({
    lat: function() { return 0; },
    lng: function() { return 0; },
});

您还可以为它创建工厂功能:

function createLatLng(lat: number, lng: number): LatLng {
    return {
        lat: function() { return lat; },
        lng: function() { return lng; }
    };
}

如果你想要一个课程,那么你就这样做:

class LatLng {
    constructor(private _lat: number, private _lng: number) {}

    lat() {
        return this._lat;
    }

    lng() {
        return this._lng;
    }
}

推送一个像这样的新实例:

path.push(new LatLng(0, 0));