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

标签 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):

interface Iutil = { extendRegExp (any) }

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

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

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

有什么方法可以执行 var util = {}

最佳答案

您可以在分配空对象时将其断言为您的接口(interface)类型:

   var util: Iutil = {} as Iutil;

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

如果 TypeScript 仍然报错(例如,类型之间没有重叠或类似的东西),那么您可以对 any 进行断言,然后对您的界面进行断言:

   var util: Iutil = {} as any as Iutil;

关于javascript - 在 Typescript 中向其添加函数之前,如何将变量声明为空对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27686304/

相关文章:

javascript - 将 javascript 双按位转换为 C#

javascript - 无法找到适用于 Highcharts 的正确 JSON 数组语法

typescript - Angular 2 - 获取组件实例

reactjs - 我如何通过类原型(prototype)或 enzyme 包装器实例正确地监视 react 组件的方法?

javascript - 用于减少要编写的 javascript 行数的技术

javascript - 使用 javascript (JQuery Tools Scrollable) 中心更改 CSS 宽度

typescript - 声明泛型类型的 const

javascript - 主干 - 从 subview 调用/引用父 View

Angular 6 ngrx 商店测试 : cannot read ids of undefined

javascript - NodeJS 项目没有添加到对象的索引上?