我们看个具体的例子。下面这个使用 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的原创文章,尽在:“汪子熙”:

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

  1. SAP UI5 应用开发教程之四十八 - 如何在 SAP UI5 应用里开发条形码扫描功能试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  2. Visual Studio Code搭建TypeScript开发环境

    转载 http://www.cnblogs.com/sunjie9606/p/5945540.html 使用Visual Studio Code搭建TypeScript开发环境 1.TypeScrip ...

  3. 使用Visual Studio Code + Node.js搭建TypeScript开发环境

    Visual Studio Code搭建Typescript开发环境 -- 相关文章: http://www.cnblogs.com/sunjie9606/p/5945540.html [注意:这里仅 ...

  4. 使用Visual Studio Code搭建TypeScript开发环境

    使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...

  5. 48. 如何在 SAP UI5 应用里开发条形码扫描功能

    SAP UI5 应用开发教程之四十八 - 如何在 SAP UI5 应用里开发条形码扫描功能 先看实现效果: 从 Github 下载本步骤的源代码: 运行命令行 npm install 和 ui5 se ...

  6. SAP UI5 的 TypeScript 实践

    TypeScript 是 JavaScript 的超集,它为语言添加了可选的静态类型. 它带有一个编译器,可以将 TypeScript 代码转换为 JavaScript,并在 JavaScript 运 ...

  7. 使用gulp和vsc构建高效的typescript开发环境

    出于某些原因,近期开始需要在公司推广使用nodejs写服务端,因为之前使用es6开发过多个个人项目,所以知道新手开发node非常容易将代码写的散乱并且不易后人理解.本人刚入行的时候做的是java,觉得 ...

  8. 手牵手系列之TypeScript开发环境搭建

    新建项目 初始化 npm init 安装全局依赖 npm install typescript tslint -g 执行命令初始化,项目根目录生成tsconfig.json文件 tsc --init ...

  9. TypeScript 开发环境的搭建与数据类型

    一.Ts的优势 更早的发现错误 任何位置都有代码提示,增加开发效率 类型系统提升了代码的可维护性,重构更容易 使用最新的ES语法 TS类型推断机制,降低成本 二.开发环境的搭建 安装 Node.js ...

最新文章

  1. 用Leangoo管理你的项目
  2. c语言switch计算利润,求助。。关于用switch编写简易计算器
  3. java中数组属于哪种类型_在Java中,关于数组描述正确的是
  4. python安装Scrapy踩过的坑以及安装指导
  5. python函数式编程思想_python函数式编程
  6. multipartfile file java 怎么获取里面的属性_「小程序JAVA实战」小程序的举报功能开发(68)...
  7. mysql定义变量字符串类型_mysqli_stmt :: bind_param():类型定义字符串中的元素数量与绑定变量的数量不匹配...
  8. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之70---面向照相机的开发...
  9. Java新职篇:声明一个变量
  10. 筛选数据库_网络药理学(2)| 使用TCMSP数据库检索中药成分并基于ADME参数进行成分筛选...
  11. matlab 画根轨迹,4.4 绘制根轨迹的MATLAB函数 | 学步园
  12. try固定搭配_regret cease try等词的固定搭配用法
  13. 由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。
  14. html5canvas圆角矩形,html5 canvas 绘制圆角矩形
  15. 【电脑常用办公软件】万彩办公大师教程丨截屏大师工具的应用
  16. 在MacOS上安装MacTex
  17. 虚拟机下 linux 大小写切换失效 Bug(vmware 15.5.5 导致)
  18. 自动化篇 - 为闲鱼制作一个客服机器人
  19. 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业——Convolution model:step by step and application (4.1)
  20. 数学建模之topsis法(c语言实现)

热门文章

  1. 【转】vue项目打包上传的步骤和方法
  2. Docker技术快速精通指南
  3. 网络安全泡沫是否即将破灭?
  4. Could not load java.net.BindException错误解决
  5. jQueryEasyUi验证
  6. 启动tomcat遇到的问题整理
  7. 关于使用Carbide编译及配置的一点注意事项
  8. 获取某个日期是一年中的第几周
  9. 2017.7.18可变/不可变类型,符号运算及其流程控制
  10. 很实用的一篇HTTP状态码