2017-05-22 9 views
1

私のコードでは、すばらしい機能を提供したMyMethod(): void {...}という単一のメソッドを持つMyClassという名前のクラスを使用していました。これらのクラス+メソッドは多くの場所で使用されていました。TypeScriptで名前が変更されたメソッドを持つエクスポートクラス?

改良された方法で同じ機能を提供する単一の方法BrandNewMethod(): void {...}を持つ(私が原因に編集することはできません[理由はあなたを納得させるでしょう何でも挿入]BrandNewClassという名前の新しいクラスが今あります。

新しい機能で古い機能を切り替えるには、すでにMyClass(およびMyMethod)を取り除いています。

その後、私はどこにでもBrandNewClassBrandNewMethodMyClassMyMethodへの参照を変更することができます。

BrandNewClassMyClassに再エクスポートしてMyMethodBrandNewMethodに変更すると、私はその作業を楽にすることができます。

export { BrandNewClass as MyClass } from 'BrandNewClass'; 

も(MyMethodに)エイリアスますさらなる努力を緩和し、メソッドの名前BrandNewMethodので、再輸出を設定する方法はありますか?

答えて

0

は、ケースを制御するために、別の.TSファイルを使用して、ファイルがexports.ts

import { MyClass } from "./MyClass"; 
import { BrandNewClass } from "./BrandNewClass"; 

export interface IExportClass { 
    ClassInstance: any; 
    DoThisAwesomeFunction: Function; 
} 

export function GetExportClass(isNew: boolean): IExportClass { 
    var instance; 
    if (!isNew) { 
     instance = new MyClass(); 
     return { 
      ClassInstance: instance, 
      DoThisAwesomeFunction: instance.MyMethod 
     } 
    } 
    else { 
     instance = new BrandNewClass(); 
     return { 
      ClassInstance: instance, 
      DoThisAwesomeFunction: instance.BrandNewMethod 
     } 
    } 
} 

が、使用命名されたとします

import { GetExportClass, IExportClass } from "./exports"; 

// global setting 
var usingNewMethod: boolean = true; 

var methodDriver: IExportClass = GetExportClass(usingNewMethod); 
methodDriver.DoThisAwesomeFunction(); 
0
export class MyClass extends BrandNewClass { 
    constructor() { 
     super(); 
     console.log("MyClass is deprecated, use BrandNewClass") 
    } 

    public MyMethod() { super.BrandNewMethod(); } 
} 
関連する問題