在在Typescript中向其添加函数之前,如何将变量声明为空对象?

时间:2014-12-29 09:28:21

标签: javascript typescript

我正在尝试将我的javascript转换为Typescript,并想出了另一个问题。这是我的代码:

var util = {};

然后在代码中:

util.extendRegExp = function (regex, pre, post) {

    if (pre === null || pre === undefined) {
        pre = "";
    }
    if (post === null || post === undefined) {
        post = "";
    }

我试图声明这样的界面:

interface Iutil = { extendRegExp (any) }

...
...
var util: Iutil = {};

但现在我收到一条错误消息:

Can't convert {} to Iutil. util is missing the property extendRegExp 

我有办法var util = {}

2 个答案:

答案 0 :(得分:7)

您可以在分配对象时将对象初始化器强制转换为接口:

   var util: Iutil = <Iutil> {};

然后您可以稍后分配该功能。

答案 1 :(得分:3)

另一种选择(我更喜欢)是使用optional将其标记为?,因为说实话,只要您开始使用类型断言,它就可能存在或不存在:

interface Iutil { extendRegExp? (any) }
var util: Iutil = {}; // No error