TypeScript语言规范的6.3节讨论了函数重载,并提供了有关如何实现此功能的具体示例。但是,如果我尝试这样的事情:export class LayerFactory { constructor (public styleFactory: Symbology.StyleFactory) { } createFeatureLayer (userContext : Model.UserContext, mapWrapperObj : MapWrapperBase) : any { throw "not implemented"; } createFeatureLayer(layerName : string, style : any) : any { throw "not implemented"; } }我收到一个编译器错误,指示重复的标识符,即使函数参数的类型不同。即使我向第二个createFeatureLayer函数添加了一个附加参数,我仍然会遇到编译器错误。请给我个主意。
3 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
这可能是因为,当两个函数都编译为JavaScript时,它们的签名是完全相同的。由于JavaScript没有类型,我们最终创建了两个带有相同数量参数的函数。因此,TypeScript限制我们创建此类函数。
TypeScript支持基于参数数量的重载,但是如果将其与OO语言进行比较,则要遵循的步骤有些不同。在回答另一个SO问题时,有人用一个很好的例子来解释它:方法重载?。
基本上,我们正在做的是,我们只创建一个函数和许多声明,以使TypeScript不会产生编译错误。当此代码编译为JavaScript时,将仅可见具体功能。由于可以通过传递多个参数来调用JavaScript函数,因此它可以正常工作。
添加回答
举报
0/150
提交
取消