typescript - 如何使用 Typescript 2.0 扩展下划线

标签 typescript underscore.js mixins

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

//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); }
});

但是,使用 _.sum() 给我“Property 'sum' does not exist on type 'UnderscoreStatic'。

好吧,谁能告诉我这样做的正确方法?

最佳答案

在进一步查找之后,您还有可以解决您的问题的全局扩充 (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); }
});

由于你的 underscore 混合必须至少运行一次,你必须尽早包含/要求这个修改,但你可以在混合后正常使用 underscore 包。

关于typescript - 如何使用 Typescript 2.0 扩展下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39095343/

相关文章:

javascript - Marionette属性未定义,从API获取

css - 使用 LESS,是否可以扩展参数混合?

javascript - Webpack - 在外部文件中导入 mixins/变量/函数

javascript - 合并客户端/服务器端模板引擎

c++ - Visual C++ 中的 Mixin 类问题

typescript - zod:将字符串转换为数字后设置最小最大值

angular - 如何使用带@types/jstree 的 typescript 将jstree 添加到angular 2 应用程序

javascript - 使用 ngIf 错误时如何禁用 Angular 6 中的按钮保存

reactjs - 由于 popper js typescript 错误,React 应用程序构建失败

javascript:在对象之间扩展方法,例如 mixin