【问题标题】:Why does typescript not allow optional parameters before required parameters?为什么打字稿不允许在必需参数之前使用可选参数?
【发布时间】:2015-09-11 08:20:25
【问题描述】:

我在我的项目中使用打字稿,并在编写定义文件时注意到openui5 偶尔在必需参数之前使用可选参数。例如 // Defines a Javascript module with its name, its dependencies and a module value or factory. define(sModuleName?, aDependencies?, vFactory, bExport?); TypescriptFlow TypeClosure Compiler 都需要这种形式的参数列表: ParameterList: RequiredParameterList OptionalParameterList RestParameter RequiredParameterList , OptionalParameterList RequiredParameterList , RestParameter OptionalParameterList , RestParameter RequiredParameterList , OptionalParameterList , RestParameter

但是,这个结构不能被视为等同于三个重载函数,即

define(vFactory, bExport?);
define(aDependencies, vFactory, bExport?);
define(sModuleName, aDependencies, vFactory, bExport?);

【问题讨论】:

  • 如果只有2个参数,函数的内部结构可能会使用aDependencies 的值作为vFactory 。只需要一个参数,但在函数的实际定义中,第一个参数sModuleName 可能对应不同的东西,具体取决于函数调用中使用的参数数量
  • 所以你是对的,这些定义等同于文档中描述的定义,所以前两个参数不是真正的可选参数。
  • 所以在这种情况下它是语法糖,对吧?你有没有反例说明这种翻译没有意义?
  • 顺便说一句:继续写一个答案,我会接受的。

标签: typescript google-closure-compiler flowtype


【解决方案1】:

但是,这个结构不能被视为等同于三个重载函数

它可以。但是所有语言功能都从 -100 开始。并且没有足够的用例来证明复杂性。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-11-05
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 2015-02-19
  • 2014-07-27
相关资源
最近更新 更多