TypeScript嵌套静态属性

时间:2015-10-09 13:59:54

标签: javascript static nested typescript

我正在尝试构建一个包含在不同位置使用的常量值的类。

结构应该是这样的:

class JavascriptEvents {
    static change: string = "change";
    static click: string = "click";
    static blur: string = "blur";
    static inputChange: string = "input propertychange paste";
    static dblClick: string = "dblclick";
    static bootstrap: Object = {
        accordion: {
            show: "show.bs.collapse",
            shown: "shown.bs.collapse",
            hide: "hide.bs.collapse",
            hidden: "hidden.bs.collapse"
        },
        modal: {
            shown: "shown.bs.modal",
            show: "show.bs.modal",
            hide: "hide.bs.modal",
            hidden: "hidden.bs.modal",
            loaded: "loaded.bs.modal"
        }
    }
}

问题:如何嵌套bootstrap部分,以便我可以引用如下事件:

$("someElement").on(JavascriptEvents.bootstrap.modal.shown, function(){
    // do whatever needed
});

1 个答案:

答案 0 :(得分:1)

我认为问题是: Object声明,该声明隐藏了来自呼叫网站的所有类型信息。如果你只是删除它,类型检查器应该再次开心。

E.g:

class JavascriptEvents {
    static bootstrap: Object = {
        modal: {
            shown: "shown.bs.modal",
        }
    }
    static bootstrap2 = {
        modal: {
            shown: "shown.bs.modal",
        }
    }
}

let jq: any;
jq.on(JavascriptEvents.bootstrap.modal.shown); // Error
jq.on(JavascriptEvents.bootstrap2.modal.shown); // Works

Playground

相关问题