我想将以下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);
答案 0 :(得分:2)
export interface coordinateArray {
(): position[];
}
您所描述的不是数组,它是一种函数类型,在调用时会返回一个数组:
var x: coordinateArray = ...;
var y = x(); // y: position[]
您可能想要定义索引签名:
export interface coordinateArray {
[index: number]: position;
}
这不会直接转换为position[]
,因为它实际上并不是一个数组(真正的position[]
会有splice
和push
等方法,但是{{ 1}}没有),但至少对于类型的形状是正确的。
答案 1 :(得分:1)
在coordinateArray
的实例上调用构造函数方法将返回类型position[]
,但是使用接口作为类型将不会为您提供与position[]
兼容的内容。
如果你有其他工作的代码,除了编译器警告,你可以使用以下方法更好地告诉编译器:
(<position[]><any> ca)