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);
4

2 に答える 2

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

あなたが説明したのは配列ではなく、呼び出されたときに配列を返す関数型です。

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

おそらく、代わりにインデックス シグネチャを定義する必要があります。

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

position[]これはまだ実際には配列ではないため (実数にはandのposition[]ようなメソッドがありますが、そうではありません)、直接 a に変換されませんが、少なくとも型の形状については正しいです。splicepushcoordinateArray

于 2013-02-19T16:35:40.457 に答える
1

のインスタンスでコンストラクター メソッドを呼び出すと、coordinateArraytype が返されますposition[]が、インターフェイスを型として使用しても、 と互換性のあるものは得られませんposition[]

コンパイラの警告を除いて、それ以外の場合は機能するコードがある場合は、次の方法を使用して、よりよく知っているコンパイラに伝えることができます。

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