、ControllerExtension 與 Fiori 擴(kuò)展機(jī)制的邊界)
在一個現(xiàn)代 SAP UI5 TypeScript 項(xiàng)目里,如果已經(jīng)習(xí)慣了 Angular、Spartacus 或其他 TypeScript 生態(tài),很自然會產(chǎn)生一個聯(lián)想。TypeScript 可以通過declare module把已有模塊里的類型繼續(xù)補(bǔ)充下去,那么 SAP UI5 是否也存在一套相似機(jī)制,可以不修改原始Controller、Control或框架代碼,卻把自己的屬性、方法和行為加進(jìn)去。這個問題不能只回答有或者沒有,因?yàn)?SAP UI5 里實(shí)際上存在兩條完全不同的擴(kuò)展路線。一條發(fā)生在 TypeScript 編譯器看到的類型世界里,它解決的是靜態(tài)類型問題。另一條發(fā)生在 SAP UI5 Runtime 里,它解決的是對象真正擁有什么方法、控件真正擁有什么property、aggregation、event,以及一個 SAP 標(biāo)準(zhǔn)應(yīng)用怎樣在不修改原代碼的前提下加入客戶邏輯。如果把問題限定為 TypeScript 語法,那么答案非常明確,SAP UI5 TypeScript 項(xiàng)目當(dāng)然可以使用 TypeScript 自己的Module Augmentation。SAP UI5 并沒有發(fā)明另一門 TypeScript,官方提供的@sapui5/types和@openui5/types最終仍然是 TypeScript declaration files,TypeScript Compiler 按照普通 TypeScript 類型聲明處理它們。SAP U