2017-04-16 6 views
3

私のような日のプロトタイプにいくつかの拡張を加えました:私はかなり標準レイアウトですionic2チュートリアル--v2テンプレートを使用していイオン2つの角度2つのグローバルインポート拡張メソッド

interface Date { 
    YearsFromToday(): number; 
} 

Date.prototype.YearsFromToday = function(): number { 
    // implementation 
} 

- アプリ.html、app.ts、app.moduleなど

これをグローバルに宣言する簡単な方法があるかどうかは疑問でした。私はこのプロジェクトをどこに置くべきか正確には分かりません。

答えて

2

あなたの猿パッチコードをファイルに入れてください。 次の例のように、サル・パッチdate.ts呼び出すことができます:

モンキーパッチ-date.ts

interface Date { 
    YearsFromToday(): number; 
} 

Date.prototype.yearsFromToday = function(): number { 
    // implementation 
} 

、その後main.tsまたは何でそれをインポートしますあなたの入力モジュールは次のとおりです。

main.ts

import './monkey-patch-date'; 

交互に。あなたは何か危険なことをしていることを明示的に明示したい場合は、猿パッチャーをエクスポートするモジュールにすることができます。

モンキーパッチ-date.ts

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

export default function() { 
    Date.prototype.yearsFromToday = function(): number { 
     // implementation 
    }; 
} 

そして

main.ts

import monkeyPatchDate from './monkey-patch-date'; 
monkeyPatchDate(); 

別の方法として、ライブラリの作者に特に有用であるようにそれをインポートすることですサルのパッチ適用を許可しますが、まだ機能を公開している間はそれを必要としません。ここで

は一例です:今

日付-拡張製品/ index.ts

export function yearsFromToday(date: Date): number { 
    // implementation 
} 

日付-拡張製品/サルpatch.ts

import {yearsFromToday} from './index'; 

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

Date.prototype.yearsFromToday = function() { 
    return yearsFromToday(this); 
} 

消費者日付のプロトタイプを猿のパッチで

import 'date-augmentations/monkey-patch'; 

import {yearsFromToday} from 'date-augmentations'; 

const date = new Date('12-12-2023'); 
const yft = yearsFromToday(date); 
console.log(yft); // prints 6 
+0

にパッチを適用猿せずに輸出によって機能にアクセスすることができますあなたが必要な場合、私は帰って –

+0

johnny5 @得るとき、私はこれをチェックアウトするだろうおかげで私は、あなたが役に立つかもしれないいくつかの追加情報を追加しましたライブラリを書くか競合を経験する。 –

関連する問題