2015-09-10 43 views
1

我爲我的項目使用了typescript,並且在編寫定義文件時注意到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?); 
+0

如果只有2個參數,函數的內部結構可能會使用'aDependencies'作爲'vFactory'。只需要1個參數,但在函數的實際定義中,作爲第一個參數的sModuleName可能對應於不同的事情,具體取決於函數 – Hacketo

+1

的調用中使用的參數個數,請參閱源代碼https:/ /github.com/SAP/openui5/blob/master/src/sap.ui.core/src/jquery.sap.global.js#LC2660 – Hacketo

+0

所以你是對的,這些定義與文檔中描述的定義相同,所以前兩個參數不是真正的可選項參數。 – Hacketo

回答

1

然而,這個結構可能不會被視爲等同於三個重載函數:

它可以。但所有語言功能都始於-100。並沒有足夠的用例來證明併發症。

+0

「所有語言功能的起始位置是-100」是什麼意思?沒有得到它 – Xsmael

+0

它是一種流行的語言設計決策。原始參考:https://blogs.msdn.microsoft.com/ericgu/2004/01/12/minus-100-points/ – basarat

相關問題