1

以下のように datatables プラグイン datatables.net を使用しています。

 oTable = $('#dataTable').dataTable({ });

ここに私が持っているいくつかのコードがあります

$('#detailData')
    .on('click', '.sort-up', function (event) {
        event.preventDefault();
        var column = $(this).closest('th'),
            columnIndex = column.parent().children().index(column.get(0));
        oTable.fnSort([[columnIndex, 'asc']]);
        return false;
    })

これにより、Typescriptで次のエラーが発生します。

「配列リテラル式に互換性のない型があります」

どうすればこれを修正できるかについて、誰かアドバイスをもらえますか? columnIndex が数値で、'asc' が文字列であるという事実が気に入らないようです。スタック オーバーフローでは、次のように表示されました。

var f: any[][] = [
    [Foo, [1, 2, 3]],
    [Bar, [7, 8, 9]],
];

このようなことをする必要があることは理解していますが、.d.ts ファイルで fnSort 関数の定義を設定する方法はありますか?

4

1 に答える 1

2

これは仕事をする必要があります

oTable.fnSort([<any[]>[columnIndex, 'asc']]);

配列は均一な型である必要があり、[数値、文字列] の型が混在しているため、コンパイル エラーがスローされます。それを any[] にキャストすると、配列内のすべての値が「any」型であることをコンパイラに伝えます(これは本当です;))。コンパイラは正しい js を生成します。typescriptコンパイラを少しだますための単なる方法です

他の方法でも実行できます-columnIndexを文字列に変換しますが、数値にする必要がある場合は、配列をany[]にキャストする必要があります

于 2012-11-12T11:38:45.547 に答える