2017-05-22 24 views
1

在我的代碼中,我使用了一個令人驚訝地命名爲MyClass的類,它有一個方法MyMethod(): void {...},它提供了一個非常棒的功能。這些class +方法在很多地方都有使用。在TypeScript中使用重命名方法導出類?

現在有一個名爲BrandNewClass一個全新的類(我不能編輯由於[插入任何理由來說服你])具有單一的方法BrandNewMethod(): void {...}改進的方式提供相同的功能。

爲了切換舊的功能與全新的,我已經擺脫MyClass(和MyMethod)。

在那之後,我可以改變,以BrandNewClassBrandNewMethod到處MyClassMyMethod引用。

但是,如果我將BrandNewClass重新導出爲MyClass,並且只是將MyMethod更改爲BrandNewMethod,我可以減輕工作量。

export { BrandNewClass as MyClass } from 'BrandNewClass'; 

有沒有一種方法,以進一步緩解努力,並配置轉口因此該方法的名稱BrandNewMethod也得到別名(以MyMethod)?

回答

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(); } 
} 
相關問題