TypeScript 嵌套静态属性

TypeScript nesting static properties

我正在尝试构建一个 class,它将包含要在不同地方使用的常量值。

结构应该是这样的:

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
});

我认为问题出在 : Object 声明,它隐藏了调用站点的所有类型信息。如果你简单地删除它,类型检查器应该会再次高兴。

例如:

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