我在使用对象字面量时会使用泛型来帮助简化接口构建的过程。例如,我所有使用字符串作为键的对象的基础接口是
interface IStringTMap<T> { [s: string]: T; };
如果我想使用这个来强制一个对象完全由函数组成,我会创建一个新的接口
interface IStringFunctionMap extends IStringTMap<Function> { };
然而,有时我需要使用更复杂的对象。例如,假设我想要构建以下结构:
var obj = {
"group_1" : {
"func_1" : function() {},
"func_2" : function() {}
},
"group_2" : {
"func_1" : function() {},
"func_2" : function() {}
}
}
我可以很容易地从原始数据构建此界面。
interface IFunctionGroups { [s: string]: { [s: string]: Function } };
如果我使用现有的 IStringTMap
接口,如何使这个更易读?
我尝试过用我的“穴居人逻辑”,但只是把一个接口塞到另一个里面并不能解决问题。
interface IFunctionGroups extends IStringTMap<IStringFunctionMap>;
给我返回以下错误信息:
接口只能扩展具有可选类型参数的标识符/限定名称。
interface IFunctionGroups extends IStringTMap<IStringFunctionMap> { };
后面的括号,你是否愿意编辑你的问题,指出它们缺失了?这样做也许可以使问题更相关和有用。 - Sandy Gifford