DefinitelyTyped 提供了 underscore 的声明文件,其中定义了一个 List
接口,并在代码中广泛使用。
// 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[]
符合接口List
的要求。
有哪里做错了,怎样才能修复它呢?
import * as _ from "underscore";
可翻译为:使用“underscore”模块时,可以通过import * as _ from "underscore";
的方式进行导入。 - David