TypeScript:声明一个名为" new"的函数的变量。

时间:2017-08-09 18:11:38

标签: javascript typescript

我想说我想写一个模块的TypeScript定义,它的JavaScript等价如下:

var service = {};
service.new = function (name, options) {
    console.log('Ive been called!');
};
module.exports = service;

我该如何申报?我找不到在服务上声明这个名为new的属性的方法,因为new是一个保留关键字,但这个JavaScript代码仍然有用,应该可以在.d.ts文件中定义。

我上次失败的尝试是

export = ModuleName;
export as namespace ModuleName;

declare var instance: ModuleName.StaticInstance;

declare namespace ModuleName {

    interface StaticInstance {
        new(name: string, options: ModuleName.Options): NewService;
    }

    interface NewService {
        someMethod()...
    }

    interface Options {
        option1: number;
        ...
    }
}

任何提示?

1 个答案:

答案 0 :(得分:1)

在某些情况下,您可以引用标识符名称:

interface MyModule {
    "new"(name: string, options: Options): NewService;
}

declare const m: MyModule;
export = m;