【问题标题】:How to declare this specific object in typescript?如何在打字稿中声明这个特定对象?
【发布时间】:2015-11-15 03:54:31
【问题描述】:

在普通的 javascript 中,我有一个 var _events,它是一个函数字典的字典。

  • 字典的所有键都是字符串。
  • 函数如下:function(info){}

在 TypeScript 中,这是它的定义:

interface MyCallback {
    (info: any) : void;
}

如何在类中声明事件?这个我试过了

class MyClass {
    private _events: {string: {string: MyCallback[] }} = {};
}

但是我得到了

类型“{}”不可分配给“{string: {string: MyCallback[] }}”。类型“{}”中缺少属性字符串;

【问题讨论】:

    标签: typescript


    【解决方案1】:

    我想你正在寻找这个:

    class MyClass {
        private _events: { [key: string]: { [key: string]: MyCallback[] }} = {};
    }
    

    所以该类型将允许这样的事情:

    let events: { [key: string]: { [key: string]: MyCallback[] }} = {};
    events["myKey"] = {};
    events["myKey"]["myNextKey"] = [];
    events["myKey"]["myNextKey"].push((info) => { console.log('callback'); });
    

    之前它定义了名为string的属性:

    let events: {string: { string: MyCallback[] }};
    events = { string: { string: []; }}
    

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 2020-01-08
      • 2021-01-20
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      相关资源
      最近更新 更多