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[];
}

但是当我尝试投射它时,我遇到了一些问题:

无法将“坐标数组”转换为“位置 []”。

在代码中:

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

2 回答 2

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

您所描述的不是数组,而是一种函数类型,在调用时会返回一个数组:

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

您可能想要定义一个索引签名:

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

This won't convert directly to a position[] because it's still not actually an array (a real position[] would have methods like splice and push, but coordinateArray doesn't), but is at least correct about what the shape of the type is.

于 2013-02-19T16:35:40.457 回答
1

在 的实例上调用构造函数方法coordinateArray将返回 type position[],但将接口用作类型不会给您提供与position[].

如果您有其他工作的代码,除了编译器警告之外,您可以使用以下方法告诉编译器您更了解:

(<position[]><any> ca)
于 2013-02-18T16:03:27.643 回答