ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

通过 SAP UI5 的 TypeScript 开发环境,来学习什么是 DefinitelyTyped

2022-02-15 19:33:46  阅读:182  来源: 互联网

标签:TypeScript OpenUI5 openui5 补丁 类型定义 UI5 DefinitelyTyped types


我们看个具体的例子。下面这个使用 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/DefinitelyTyped/DefinitelyTyped/tree/master/types/openui5

这些外部定义都是从 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的原创文章,尽在:"汪子熙":

标签:TypeScript,OpenUI5,openui5,补丁,类型定义,UI5,DefinitelyTyped,types
来源: https://www.cnblogs.com/sap-jerry/p/15897859.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有