我正在使用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'是一个字符串。在Stack Overflow上我看到了以下内容:
var f: any[][] = [
[Foo, [1, 2, 3]],
[Bar, [7, 8, 9]],
];
我明白我需要做这样的事情,但我有办法设置 在.d.ts文件中定义fnSort函数?
答案 0 :(得分:2)
这应该做的工作
oTable.fnSort([<any[]>[columnIndex, 'asc']]);
数组应该是统一类型,因为你有混合类型[number,string],它会抛出编译错误。将它转发给任何[]告诉编译器,数组中的每个值都是&#39; any&#39; (这是真的顺便说一句;))。然后编译器将生成正确的js。 它只是一种愚弄打字稿编译器的方法
你也可以通过其他方式做到 - 将columnIndex转换为string,但是如果你需要它是数字那么你必须将数组转换为任何[]