我爲我的項目使用了typescript,並且在編寫定義文件時注意到openui5偶爾在必要參數之前使用可選參數。例如 // Defines a Javascript module with its name, its dependencies and a module value or factory. define(sModuleName?, aDependencies?, vFactory, bExport?);
Typescript,Flow Type和Closure 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'。只需要1個參數,但在函數的實際定義中,作爲第一個參數的sModuleName可能對應於不同的事情,具體取決於函數 – Hacketo
的調用中使用的參數個數,請參閱源代碼https:/ /github.com/SAP/openui5/blob/master/src/sap.ui.core/src/jquery.sap.global.js#LC2660 – Hacketo
所以你是對的,這些定義與文檔中描述的定義相同,所以前兩個參數不是真正的可選項參數。 – Hacketo