TypeScript:如何向内置类添加静态方法

标签 typescript defineproperty class-extensions

有没有办法为 DateStringArray 等类型添加一些静态方法?

例如,我想将方法​​ today 添加到 Date 类,在 JavaScript 中我可以简单地向它添加一个属性,或者我可以使用 Object.defineProperty:

Date.today = function(){
    let date = new Date;
    date.setHours(0,0,0,0);
    return date;
}

Object.defineProperty(Date, 'today', { get() { ... }});

但无论如何我都没有找到通知 TypeScript 这个新静态成员的信息。 我是不是遗漏了什么或者我用谷歌搜索的方式不对?

最佳答案

您必须扩充 DateConstructor 接口(interface)以添加静态属性:

declare global {
    interface DateConstructor {
        today: () => Date
    }
}   

Date.today = function(){
    let date = new Date;
    date.setHours(0,0,0,0);
    return date;
}

类似地为字符串和数组扩展 StringConstructorArrayConstructor。参见 declaration merging .

关于TypeScript:如何向内置类添加静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46664732/

相关文章:

swift - Swift 中具有新泛型的泛型扩展

ios - Swift 中的类扩展与子类化?

node.js - 如何使用 express 中间件处理类型?

javascript - 默认导出为全局变量 Typescript 1.8 --module UMD

javascript - React TS 中的搜索栏未按预期工作

javascript - 使用返回数组的 Object.defineProperty 重新定义 .push()

javascript - 如何调用项目中未定义的函数?

Typescript 装饰器和 Object.defineProperty 奇怪的行为

Javascript DefineProperty 和 Object.keys 返回困境

swift - UIBarButtonItem 的属性 "isEnabled"是类扩展中无法识别的选择器