1

我正在使用数据表插件 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' 是一个字符串的事实。在 Stack Overflow 上,我看到了以下内容:

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

我知道我需要做这样的事情,但是有没有办法可以在 .d.ts 文件中设置 fnSort 函数的定义?

4

1 回答 1

2

这应该做的工作

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

数组应该是统一类型,因为你有混合类型 [number, string] 它会引发编译错误。将其转换为 any[] 告诉编译器数组中的每个值都是“any”类型(顺便说一句,这是真的;))。然后编译器将生成正确的js。它只是一种愚弄打字稿编译器的方法

你也可以用其他方式 - 将 columnIndex 转换为字符串,但如果你需要它是数字,那么你必须将数组转换为 any[]

于 2012-11-12T11:38:45.547 回答