2017-09-19 130 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'僅指一種類型,但在這裏用作值。「 –