扩展基接口并导出它

时间:2016-12-27 13:04:26

标签: typescript

如何扩展基接口并导出它?例如:

export interface Date {
    /**
     * Original functions
     */
    getTime(): number;
    /**
     * My extend functions
     */
    getId(): number;

}

Date.prototype.getId = function (): number {
    return 1;
}

如果我想导出Date原型,我收到错误

  

[ts]属性'getId'在'Date'类型中不存在。

我只能手动创建d.ts文件

export interface Date {
    getTime(): number;
    getId (): number;
}

并导入

import {Date} from "myfile";

但它并不酷#/ p>

1 个答案:

答案 0 :(得分:2)

如果您想为Date原型添加方法,则需要Global augmentation

// myfile.ts

export {}; // you need this so the compiler understands that it's a module.

declare global {
    interface Date {
        getId(): number;
    }
}

Date.prototype.getId = function (): number {
    return 1;
}

然后,当您导入此文件时,您应该可以使用getId

import "file1";
let d = new Date();
console.log(d.getId());