为了账号安全,请及时绑定邮箱和手机立即绑定

TypeScript函数重载

TypeScript函数重载

有只小跳蛙 2019-12-11 13:09:26
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函数,因此它可以正常工作。



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 535 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信