2017-09-19 42 views
0

我有一个打字稿接口:打字稿接口

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

和阵列与一类经纬度的:

path: Array<LatLng>; 

我怎么能推元素这个数组?

+0

你真的有类吗?这个构造函数的实现在哪里? –

+0

没有实施。我如何在课堂上实现这个接口? –

回答

2

实现接口

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

你可以这样

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

写你也可以这样定义

path: LatLng[]; 
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)); 
+0

我没有创建这个接口。 https://angular-maps.com/api-docs/agm-core/interfaces/LatLng.html#source。但我需要将此接口用作类型并给出元素。 –

+0

哦,它是一个现有的库,那么实现可能已经存在,你只是在谈论类型。由@alexKhymenko的其他答案应该为你工作,然后 –

+0

通过@alexKhymenko不起作用。它显示错误:'''LatLng'仅指一种类型,但在这里用作值。“ –