2013-02-18 65 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[]类型是。