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

How can I declare a variable to be an empty object before I add functions to it in Typescript?

本文关键字:变量 声明 对象 Typescript 添加 函数      更新时间:2023-09-26

我正在尝试将我的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 = {}

您可以在

分配空对象时断言该空对象为接口类型:

   var util: Iutil = {} as Iutil;

然后,您可以稍后分配该函数。

如果 TypeScript 仍然抱怨(例如,类型之间没有重叠或类似的东西),那么你可以对any做一个断言,然后对你的接口做一个断言:

   var util: Iutil = {} as any as Iutil;
另一种

选择(我更喜欢)是使用 ? 将其标记为optional,因为老实说,一旦开始使用类型断言,它就可能存在也可能不存在:

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