在普通的javascript中,我有一个var _events
,它是函数字典的字典。
function(info){}
在TypeScript中,这是它的定义:
interface MyCallback {
(info: any) : void;
}
如何在课堂中声明事件?我试过这个
class MyClass {
private _events: {string: {string: MyCallback[] }} = {};
}
但是我得到了
键入' {}'不能分配给' {string:{string:MyCallback []}}'。类型' {}';
中缺少属性字符串
答案 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: []; }}