使用TypeScript时,如何使用定义文件定义数组中使用的类型?

时间:2012-11-12 05:13:46

标签: javascript typescript

我正在使用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函数?

1 个答案:

答案 0 :(得分:2)

这应该做的工作

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

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

你也可以通过其他方式做到 - 将columnIndex转换为string,但是如果你需要它是数字那么你必须将数组转换为任何[]