2017-10-02 9 views
0

私自身のクラスにサードパーティのライブラリauth0-jsをラップしようとしています。下の例では、Auth0.jsからのAuthenticationクラスがラップされ、パススルーメソッドの実装として使用されています。 buildLogoutUrl(options)は、ラップされたオブジェクトで関数を呼び出す以外に何もしません。TypeScriptクラスBのメソッドへのパススルーとして機能するメソッド

継承を使用せずにwaのbuildLogoutUrl(...)に認証のbuildLogoutUrl(...)を "リダイレクト" するために、より簡潔な方法はありますか?柔軟性の高価で

import * as a0 from "auth0-js"; 

export class Authentication { 

    constructor(private wa: a0.Authentication) { } 

    buildLogoutUrl(options?: a0.LogoutOptions | undefined): string { 
    return this.wa.buildLogoutUrl(options); 
    } 

    // Many other methods... 

} 

答えて

1

、あなた自身の割り当てを使用して入力するのは少し節約することができます:私はあなたが機能を変更することはできませんという意味では、「柔軟性」と

import * as a0 from "auth0-js"; 

export class Authentication { 

    constructor(private wa: a0.Authentication) { } 

    buildLogoutUrl = this.wa.buildLogoutUrl; 

} 

を例えば、シグネチャを実行したり、引数の前処理を実行することができます。また、あなたのクラスには、あなたがコントロールする固定のパブリックインターフェイスがなくなりました(ライブラリの作者が関数の署名を変更したとします)。

+0

これはまさに私が必要とするものです。 –

関連する問題