gpt4 book ai didi

typescript - 如何将 DefinitelyTyped 中的下划线库与 typescript 一起使用?

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:17 24 4
gpt4 key购买 nike

DefinitelyTyped提供了一个下划线声明文件,定义了一个List接口(interface),并在代码中大量使用了它。

// Common interface between Arrays and jQuery objects
interface List {
[index: number]: any;
length: number;
}

interface UnderscoreStatic {
sortBy(list: List, iterator?: any, context?: any): any;
groupBy(list: List, iterator: any): any;
countBy(list: List, iterator: any): any;
}

我正在尝试使用 countBy 函数:

// <reference path="../DefinitelyTyped/underscore/underscore.d.ts" />

declare var _: UnderscoreStatic;

_.countBy([1,2,3], function(item) {
return item%2;
});

当我编译文件时,它抛出错误:

> tsc commons.ts

> E:/commons.ts(5,0): Supplied parameters do not match any signature of call target:
Could not apply type 'List' to argument 1, which is of type 'number[]'

我不知道为什么会出现这个错误,因为 number[] 适合接口(interface) List

哪里错了,如何解决?

最佳答案

你需要传递一个与List接口(interface)兼容的对象,它是一个数组,长度为:

/// <reference path="underscore.d.ts" />

var list: List;
list[0] = 1;
list[1] = 2;
list[2] = 3;
list.length = 3;

_.countBy(list, function (item) {
return item % 2;
});

老实说,数组在技术上实现了这一点,因为它具有长度属性 - 但上面的代码可以编译。

这个的速记版本有点讨厌:

/// <reference path="underscore.d.ts" />

var list = <List><any> [1, 2, 3];

_.countBy(list, function (item) {
return item % 2;
});

关于typescript - 如何将 DefinitelyTyped 中的下划线库与 typescript 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com