关于javascript:通过-SAP-UI5-的-TypeScript-开发环境来学习什么是-DefinitelyTyped

43次阅读

共计 1109 个字符,预计需要花费 3 分钟才能阅读完成。

咱们看个具体的例子。上面这个应用 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,其类型定义从哪里来?

咱们如果对着 “sap/ui/core/UIComponent” 单击鼠标左键,就会看到一个 declare module 的申明。

单击之后,在 node_modules 文件夹下的 @types 文件夹的 openui5 上面,能找到一个 sap.ui.core.d.ts 文件:

这就是所谓的 DefinitelyTyped 内部类型定义文件。

UI5 for TypeScript 的内部类型定义文件的装置形式:

npm install –save @types/openui5

地址:https://github.com/Definitely…

这些内部定义都是从 OpenUI5 JSDoc 生成的。如果呈现问题,须要修复原始 OpenUI5 存储库中的生成器或 JSDoc,而不是此存储库中的定义文件。

OpenUI5 类型定义在两个 npm 包名下公布:

  • @openui5/ts-types-esm(由 UI5 开发团队间接公布)
  • @types/openui5(通过 DefinitelyTyped 保护的)

二者的差别:

  • 对于 @openui5/ts-types-esm 上的那些类型定义,每当公布 OpenUI5 的新补丁版本时,都会公布一个新补丁版本。即便类型定义没有变动。这意味着代码和类型定义在应用完全相同的版本时齐全同步。

然而,对于 @types/openui5,DefinitelyTyped 采纳了 definitelyTyped 的版本控制办法:

只有次要和主要版本号在库包和类型申明包之间对齐。
类型申明包的补丁版本与库补丁版本无关。

这背地的起因是,应用语义版本控制,对于雷同次要 / 主要版本的所有补丁版本,API 将放弃不变。例如:OpenUI5 1.90.0 和 OpenUI5 1.90.8 之间没有 API 变动。因而,无需为 OpenUI5 1.90.8(以及 1.90.7、1.90.6 等)公布新的类型定义。

惟一的例外是,当文档或定义生成器中存在重大改良或修复时,咱们仍可能在 DefinitiveTyped 上创立新的补丁版本。

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

正文完
 0