【问题标题】:How can I define the types used in an array with a definition file when using TypeScript?使用 TypeScript 时,如何使用定义文件定义数组中使用的类型?
【发布时间】:2012-10-31 13:56:18
【问题描述】:

我正在使用如下的数据表插件 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 函数?

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    这应该可以完成工作

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-30
      • 1970-01-01
      • 2018-05-04
      • 2022-06-29
      • 1970-01-01
      • 2023-03-03
      • 2016-09-06
      • 2020-02-27
      • 1970-01-01
      相关资源
      最近更新 更多