如何使用 Typescript 2.0 扩展下划线

ser*_*can 6 mixins underscore.js typescript

我有以下代码片段来使用 sum 函数扩展下划线

//underscore.extension.ts    
import * as _ from "underscore"

declare module "underscore" {
    export interface UnderscoreStatic {
        sum(items: number[]): number;
    }
}

_.mixin({
    sum: items => { return _.reduce<number, number>(items, function (s, x) { return s + x; }, 0); }
});
Run Code Online (Sandbox Code Playgroud)

然而,使用_。sum () 给我““UnderscoreStatic”类型上不存在属性“sum”。

好吧,有人告诉我这样做的正确方法吗?

Los*_*lds 1

进一步查找后,您还可以使用全局增强来解决您的问题(https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation

import * as _ from "underscore"

declare global {
    interface UnderscoreStatic {
        sum(items: number[]): number;
    }
}

_.mixin({
    sum: items => { return _.reduce<number, number>(items, function (s, x) {     return s + x; }, 0); }
});
Run Code Online (Sandbox Code Playgroud)

由于您的下划线混合必须至少运行一次,因此您必须尽早包含/要求这一修改,但在混合后您可以正常使用下划线包。