TypeScript9-声明文件

本篇文章来讲 TypeScript 的声明文件。

当我们在使用第三方库的时候,很多第三方库不是用 TS 写的,它们是通过原生的 JavaScript 或者是浏览器 / 或者是 node 提供的 run time 对象。如果我们直接使用 TS 肯定就会报编译不通过。

1. 声明语句

假设一个场景我们需要使用第三方库 JQuery。

之前的方式是在 html 中通过 script 标签引入 JQuery,这样就能全局使用 JQuery,我们通常会通过 jQuery('.app') 去获取对应的 DOM 对象。

但是在 TS 中并不知道 jQuery 是什么东西。

jQuery('app');

当我们直接使用会报错:Cannot find name 'jQuery'.

所以我们需要通过 declare 关键字来告诉 TS 这个变量已经在其他地方被定义了,你直接使用就可以了。

declare let jQuery: (selector: string) => any;

jQuery('app');

这样就不会再报错了。这里需要注意,declare let jQuery 并没有定义一个变量的实现,只是定义了全局变量 jQuery 的类型,仅仅会用于编程时的检查,并不是实现功能的真正代码。

2. 声明文件(.d.ts)

通常我们会把声明语句放在一个单独文件中,声明文件一般以 .d.ts 结尾的,d 就代笔声明。

有了声明文件我们就能享受 TS 带来的红利,在使用时就能获得代码补全和接口提示等功能。

一般来说,默认情况下,TS 编译器会解析项目中所有的 ts 文件,当然也包括 .d.ts 结尾的声明文件。所以上述例子中,我们也会把 jquery.d.ts 放入项目中去,这样所有的 ts 文件都能获得 jquery 的类型定义了。

3. definitelyTyped 社区

当我们想使用第三方库时,我们是不是需要从头到尾写它的声明文件呢?这个工作量显然是很大的。其实这个问题我们不需要考虑,因为TypeScript 社区已经帮我们写好了。

我们可以在 npm 官网 搜索要使用的第三方库的 TS 声明文件包。

比如上去例子中的 jquery,使用下面的命令就能下载安装 types/jquery 包,这个包中就包含 jquery 的的声明文件。

npm install --save @types/jquery

和上面说到的一样,@types/jquery 包中只有类型定义,并没有具体代码的实现。

@types 下的包和普通的 npm 模块是不一样的,它们统一由一个叫 definitelyTyped 的组织进行管理的,它是一个针对于不同库都要提供的一个高质量声明文件的社区,上面提到的 jquery 的声明文件就是由这个社区提供的。

现在有很多第三方库都已经自带了 TS 的声明文件,不需要分开安装了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/23788.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅析变电站无人值守管理的模式与特点

安科瑞虞佳豪 近年来,随着电网的发展,变电站实行无人值班管理模式已成为电网的发展方向。自1998年始,辉县市就开始了变电站综合自动化改造,截止目前全局所属24座变电站(其中35kV19座、110kV5座)已全部实现…

API自动化测试【postman生成报告】

PostMan生成测试报告有两种: 1、控制台的模式 2、HTML的测试报告 使用到一个工具newman Node.js是前端的一个组件,主要可以使用它来开发异步的程序。 一、控制台的模式 1、安装node.js 双击node.js进行安装,安装成功后在控制台输入node …

Java集合基础

4 集合基础 集合提供一种存储空间可变的存储模型,存储的数据容量可以改变ArrayLis<>: 可调整大小的数组实现<>:是一种特殊的数据类型,泛型可储存重复元素怎么使用呢 在出现E的地方我们使用引用数据类型替换即可举例:ArrayList<String>、ArrayList<Stu…

财务共享时代企业数智化应用能帮我们做些什么?

随着企业规模的不断扩大和业务范围的逐步扩展&#xff0c;财务工作的难度和复杂度也在不断提高&#xff0c;传统的手工录入和处理方式呈现出流程长、效率低、易出错等问题。为了提升财务工作的效率和准确性&#xff0c;越来越多的企业开始利用数智化应用打造企业内部的财务数智…

绝对不能错过的7个零基础免费的ChatGPT镜像网站

还在为打不开openai官网烦心&#xff1f;本文帮你实现ChatGPTMidJourney自由(&#xffe3;∇&#xffe3;)/ &#x1f4d2;收集了一些截至目前(2023年5月25日午12:00)可以免费访问&#xff0c;并且零基础也能正常使用的镜像网站&#xff0c;后续将持续维护更新(&#xff61;&a…

平安银行广州分行立足地域文化,增强差异化权益服务软实力

立足地域文化&#xff0c;拓展差异化权益服务 瓦屋纸窗之下&#xff0c;一盏清茶&#xff0c;三五好友&#xff0c;怡然自若。中国人对茶的喜爱由来已久&#xff0c;茶文化已成为中华传统文化中一张亮丽的名片&#xff0c;而广东茶文化则是中国四大茶文化系列之一。平安银行广州…

抖音seo优化源代码搭建+抖音小程序私有化开源部署

抖音seo优化源码&#xff0c;抖音seo矩阵系统搭建&#xff0c;抖音账号矩阵系统开发&#xff0c;企业在做账号矩阵过程中&#xff0c;最头疼的莫过于私域线索转化&#xff0c;作为开发者都知道&#xff0c;目前市面上我们了解的矩阵系统除了挂载POI信息外&#xff0c;无法挂载留…

unity四叉树和视锥体剔除

这个最好还是看代码&#xff0c;项目有注释放在这里&#xff1a; GetbadEarlyup/Quadtree-cone-scene: 这是一个unity四叉树场景视锥体剔除的Demo (github.com)https://github.com/GetbadEarlyup/Quadtree-cone-scene国内地址&#xff1a; Quadtree-cone-scene: unity四叉树和…

VESD静电监控系统:提高静电防护效果与管理效率

随着科学技术不断发展&#xff0c;现代的工业对静电防护的要求越来越高。因为静电的存在可能会对产品质量、工作环境、甚至是人身产生威胁。静电监控系统是一项高效的管理工具&#xff0c;能够有效地控制和监测静电产生的情况&#xff0c;提高静电防护效果和管理效率。 VESD静电…

U盘超级加密3000试用版与正式版的区别有哪些?

U盘超级加密3000是一款专业的U盘加密软件&#xff0c;它可以为U盘、移动硬盘、内存卡等移动存储设备加密。软件拥有正式版和试用版&#xff0c;那么这两个版本有什么区别呢&#xff1f;下面我们就一起来了解一下。 U盘超级加密3000试用版和正式版的区别 打开软件时的区别 试用…

基于SSM的酒店客房管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 酒店管理系统是一款高…

VMware重新安装VMwareTool字体为灰色情况+ubuntu时间设置

文章目录 前言&#xff1a;1. 重新安装VMwareTool字体为灰色2. VMware下ubuntu的时间设置 前言&#xff1a; 之前退出VMware关闭的时候没有等待虚拟机的状态保存&#xff0c;强制关机了。这就导致后面使用的时候&#xff0c;共享目录无法显示情况。对于上面的情况我的博客里面…

ASP-IIS中间件文件解析与写权限

ASP-IIS中间件文件解析与写权限 IIS文件解析 IIS 6 解析漏洞 1、该版本默认会将*.asp;.jpg 此种格式的文件名&#xff0c;当成Asp解析 2、该版本默认会将*.asp/目录下的所有文件当成Asp解析。 如&#xff1a;logo.asp;.jpg xx.asp/logo.jpgIIS 7.x 解析漏洞 在一个文件路…

SSM编程---Day 02

目录 一、核心配置文件 二、junit介绍 三、自定义java注解 四、自定义注解 五、添加log4j的支持 六、sql映射文件的介绍 一、核心配置文件 1、核心配置文件中需要注意顺序 2、根节点 <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"…

打家劫舍 III——力扣337

文章目录 题目描述法一&#xff1a;动态规划 题目描述 法一&#xff1a;动态规划 问题简化&#xff1a;一棵二叉树&#xff0c;树上的每个点都有对应的权值&#xff0c;每个点有两种状态&#xff08;选中和不选中&#xff09;&#xff0c;问在不能同时选中有父子关系的点的情况…

js正则校验特殊的不可见字符

背景 表单的输入框&#xff0c;用户可能从Excel或者其他地方直接复制粘贴&#xff0c;这时候提交到后端会导致获取的用户输入中包含一些特殊的不可见字符&#xff0c;比如tab键或者制表符等&#xff0c;这时需要在前端对用户输入做一些检验&#xff0c;检查是否存在不可见字符…

【PHP】问题已解决:宝塔面板搭建php网站无法上传图片或是文件(保姆级图文)

目录 问题情况原因和解决方法总结 『PHP』分享PHP环境配置到项目实战个人学习笔记。 欢迎关注 『PHP』 系列&#xff0c;持续更新中 欢迎关注 『PHP』 系列&#xff0c;持续更新中 问题情况 宝塔面板搭建php网站无法上传图片或是文件。 原因和解决方法 检查你的php里是否安装…

任务19 简单个人电话号码查询系统

系列文章 任务19 简单个人电话号码查询系统 问题描述 人们在日常生活中经常需要查找某个人或某个单位的电话号码&#xff0c;本实验将实现一个简单的个人电话号码查询系统&#xff0c;根据用户输入的信息&#xff08;例如姓名等&#xff09;进行快速查询。基本要求 (1) 在外存…

k8s 对已完成job自动清理

job在处理完一个任务以后&#xff0c;状态会变成Completed&#xff0c;job在状态为Completed的时候默认不会自动清理的&#xff0c;还会继续占用系统资源。 TTL-after-finished控制器 kubernetes中有专门的控制器可以自动清理已完成的job,就是TTL-after-finished控制器。 TTL…

股东刚减持,股价却起飞?用Python量化A股解禁数据,利空出尽是利好? | 邢不行

2019年6月11日&#xff0c;宁德时代上市一周年之际&#xff0c;有45%的股票迎来了解禁。 这些由大股东、高管、早期投资者持有的股份&#xff0c;原先无法交易&#xff0c;但从这一天起就可以自由卖出了。 很多人出于对解禁后巨大卖盘的担忧纷纷提前卖出&#xff0c;导致宁德时…