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