2016-12-27 2 views
0

どのようにベースインターフェイスを拡張してエクスポートできますか?たとえば:ベースインターフェイスを拡張してエクスポートする

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

} 

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

私は日付のプロトタイプをエクスポートする場合、私はエラー

を受ける[TS]プロパティ 'のgetIdは、' タイプ '日' に存在しません。

私だけがファイル

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

をd.tsし、それを

import {Date} from "myfile"; 

をインポートしかし、あなたはDateにメソッドを追加したい場合は、

答えて

2

を冷却ていない手動で作成されることができますあなたが必要とするプロトタイプ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()); 
+0

すごいです!それだけが必要!ありがとうございました! – indapublic

関連する問題