2013-02-18 102 views
1

我想這樣做的以下C#代碼翻譯成TypeScript別名打字稿陣列

[JsType(JsMode.Json)] 
public class position : JsArray<JsNumber> 
{ 
} 

[JsType(JsMode.Json)] 
public class coordinateArray : JsArray<position> 
{ 
} 

[JsType(JsMode.Json)] 
public class polygonRings : JsArray<coordinateArray> 
{ 
} 

我試圖做這樣的:

export interface position { 
    (): number[]; 
} 

export interface coordinateArray { 
    (): position[]; 
} 

export interface polygonRings { 
    (): coordinateArray[]; 
} 

但是當我嘗試投它,我有一些問題:

無法將'coordinateArray'轉換爲'position []'。

在代碼:

(<position[]> lineString.coordinates).push(position); 

回答

1

調用上的coordinateArray一個實例的構造方法將返回類型position[],但使用接口作爲一種不會給你position[]兼容的東西。

如果你有一些代碼,否則的作品,除了編譯器警告,你可以告訴你更好地瞭解使用的編譯器:

(<position[]><any> ca) 
+0

完全如我所想,thx;) – Nickon 2013-02-18 20:07:28

2
export interface coordinateArray { 
    (): position[]; 
} 

你所描述的不是一個數組,它是函數類型,調用時,返回數組:

var x: coordinateArray = ...; 
var y = x(); // y: position[] 

你可能想定義一個索引簽名:

export interface coordinateArray { 
    [index: number]: position; 
} 

,因爲它仍然不是真正的陣列(一個真正的position[]會有像splicepush方法,但coordinateArray沒有),但關於形狀是什麼,至少正確這不會直接轉化爲position[]類型是。