通过 SAP UI5 的 TypeScript 开发环境,来学习什么是 DefinitelyTyped
我們看個具體的例子。下面這個使用 TypeScript 編寫的 SAP UI5 Component:
import UIComponent from "sap/ui/core/UIComponent";/*** @namespace ui5.typescript.helloworld*/ export default class Component extends UIComponent {public multiply(x : number, y : number) : number {return x * y;} }第一行 import 的 UIComponent,其類型定義從哪里來?
我們?nèi)绻麑χ?“sap/ui/core/UIComponent” 單擊鼠標(biāo)左鍵,就會看到一個 declare module 的聲明。
單擊之后,在 node_modules 文件夾下的 @types 文件夾的 openui5 下面,能找到一個 sap.ui.core.d.ts 文件:
這就是所謂的 DefinitelyTyped 外部類型定義文件。
UI5 for TypeScript 的外部類型定義文件的安裝方式:
npm install --save @types/openui5
地址:https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/openui5
這些外部定義都是從 OpenUI5 JSDoc 生成的。 如果出現(xiàn)問題,需要修復(fù)原始 OpenUI5 存儲庫中的生成器或 JSDoc,而不是此存儲庫中的定義文件。
OpenUI5 類型定義在兩個 npm 包名下發(fā)布:
- @openui5/ts-types-esm(由 UI5 開發(fā)團隊直接發(fā)布)
- @types/openui5(通過 DefinitelyTyped 維護的)
二者的差異:
- 對于@openui5/ts-types-esm 上的那些類型定義,每當(dāng)發(fā)布 OpenUI5 的新補丁版本時,都會發(fā)布一個新補丁版本。即使類型定義沒有變化。這意味著代碼和類型定義在使用完全相同的版本時完全同步。
然而,對于 @types/openui5,DefinitelyTyped 采用了definitelyTyped 的版本控制方法:
只有主要和次要版本號在庫包和類型聲明包之間對齊。
類型聲明包的補丁版本與庫補丁版本無關(guān)。
這背后的原因是,使用語義版本控制,對于相同主要/次要版本的所有補丁版本,API 將保持不變。例如:OpenUI5 1.90.0 和 OpenUI5 1.90.8 之間沒有 API 變化。因此,無需為 OpenUI5 1.90.8(以及 1.90.7、1.90.6 等)發(fā)布新的類型定義。
唯一的例外是,當(dāng)文檔或定義生成器中存在重大改進或修復(fù)時,我們?nèi)钥赡茉?DefinitiveTyped 上創(chuàng)建新的補丁版本。
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的通过 SAP UI5 的 TypeScript 开发环境,来学习什么是 DefinitelyTyped的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用Flash制作超强立体感描边文字
- 下一篇: rssi值多少为正常(Understan