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

Mor*_*ani 7 class-extensions defineproperty typescript

有没有无论如何反正一些静态方法添加到类型,如Date,String,Array,等?

例如,我想将方法​​添加todayDate类中,在JavaScript中我可以简单地向其添加属性,或者我可以使用Object.defineProperty:

Date.today = function(){
    let date = new Date;
    date.setHours(0,0,0,0);
    return date;
}
Run Code Online (Sandbox Code Playgroud)
Object.defineProperty(Date, 'today', { get() { ... }});
Run Code Online (Sandbox Code Playgroud)

但是我没有找到通知TypeScript这个新的静态成员.我错过了什么或者我是否以错误的方式谷歌?

Sar*_*ana 8

您必须扩充DateConstructor界面以添加静态属性:

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

Date.today = function(){
    let date = new Date;
    date.setHours(0,0,0,0);
    return date;
}
Run Code Online (Sandbox Code Playgroud)

类似地扩展StringConstructorArrayConstructor用于字符串和数组.请参阅声明合并.