如何在打字稿中声明这个特定的对象?

时间:2015-11-14 16:07:22

标签: typescript

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

  • 字典的所有键都是字符串。
  • 功能类似于:function(info){}

在TypeScript中,这是它的定义:

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

如何在课堂中声明事件?我试过这个

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

但是我得到了

  

键入' {}'不能分配给' {string:{string:MyCallback []}}'。类型' {}';

中缺少属性字符串

1 个答案:

答案 0 :(得分: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: []; }}