在TypeScript中使用重命名的方法导出类?

kupeojn6  于 7个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(85)

在我的代码中,我使用了一个名为MyClass的类,它有一个单一的方法MyMethod(): void {...},它提供了一个很棒的功能。
现在有一个名为BrandNewClass的新类(我不能编辑它,因为 [插入任何能说服你的理由]),它有一个单一的方法BrandNewMethod(): void {...},以一种改进的方式提供相同的功能。
为了用全新的功能切换旧的功能,我已经摆脱了MyClass(和MyMethod)。
在此之后,我可以将对MyClassMyMethod的引用更改为BrandNewClassBrandNewMethodeverywhere
但是,如果我将BrandNewClass重新导出为MyClass并将MyMethod更改为BrandNewMethod,则可以减轻工作量。

export { BrandNewClass as MyClass } from 'BrandNewClass';

字符串
有没有一种方法可以进一步减轻工作量,并配置重新导出,使方法的名称BrandNewMethod也得到别名(到MyMethod)?

wz1wpwve

wz1wpwve1#

export class MyClass extends BrandNewClass {
    constructor() {
        super(); 
        console.log("MyClass is deprecated, use BrandNewClass")
    }

    public MyMethod() { super.BrandNewMethod(); }
}

字符串

kb5ga3dv

kb5ga3dv2#

使用另一个.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();

相关问题