【TypeScript】类型声明文件的讲解与使用

news2025/1/18 7:37:39

目录

简介

文件类型

类型声明文件使用


简介

我们发现今天所有的JS应用都会引入许多第三方库来完成任务需求。这些第三方库无论是否是TS编写的最终都会编译成JS代码给开发者使用。我们知道TS提供了类型才有了代码提示和类型保护机制,但我们引入的第三方库都会有相应的TS类型。这些类型就是 “类型声明文件为已存在的JS库提供类型信息

文件类型

TS中有两种文件类型:.ts文件.d.ts文件

.ts文件:既包含类型信息又可执行代码,可以被编译为 .js 文件,然后执行代码。是编写程序代码的文件。

.d.ts文件:只包含类型信息的类型声明文件,不会生成 .js 文件,仅用于提供类型信息。是为JS提供类型信息的文件。

类型声明文件使用

在使用TS开发项目时,类型声明文件的使用包括以下两种方式:

使用已有的类型声明文件

内置类型声明文件:TS为JS运行时可用的所有标准化内置API都提供了声明文件。例如在使用数组时,数组所有方法都会有相应的代码提示以及类型信息:

第三方库的类型声明文件:目前几乎所有常用的第三方库都有相应的类型声明文件。第三方库的类型声明文件有以下两种存在形式:

库自带类型声明文件:例如npm 下载的 axios ,正常导入该库,TS就会自动加载库自己的类型声明文件,以提供该库的类型声明。

由DefinitelyTyped提供:

DefinitelyTyped是一个github仓库,用来提供高质量的TS类型声明,可以通过 npm/yarm 来下载该仓库提供的TS类型声明包,这些包的名称格式为:@types/*。比如 @type/react、@type/lodash等。注意:在实际项目开发中,如果你使用的第三方库没有自带的声明文件,VScode会给出明确的提示。当安装 @type/* 类型声明包后,TS也会自动加载该类声明包,以提供该库的类型声明。

创建自己的类型声明文件

项目内共享类型:如果多个 .ts文件中都用到同一个类型,此时可以创建 .d.ts文件提供该类型,实现类型共享。

为已有的JS文件提供类型声明:这种方式有两种情况,一种是在将 JS 项目迁移到 TS 项目时,为了让已有的 .js文件有类型声明;另一种是成为库作者,创建库给其他人使用。

在TS项目中也可以使用.js文件,在导入.js文件时TS会自动加载与.js同名的.d.ts文件,以提供类型声明。declare关键字:用于类型声明,为.js文件已存在的变量声明类型,而不是创建一个新的变量。而对于type、interface等这些明确就是TS类型,可以省略declare关键字。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搞懂 Spark 系列之 Spark Shuffle 的前世今生

注:本文已首发于PowerData公众号! 1 Spark Shuffle 是什么? Shuffle 中文意思是“洗牌,混洗”,而在 Hadoop 的 MapReduce 框架中,Shuffle 是 Map 和 Reduce 中间必不可少的连接桥梁。数据在从Map 阶段结束…

优化器核心技术—Join Reorder

Join Reorder 的简介 Join Reorder 是开务数据库 SQL 优化器中的核心优化算法,开务数据库优化器包括 RBO 和 CBO 两部分,负责计划优化,提升 SQL 执行性能。Join Reorder 能够保证在复杂查询执行的场景下,枚举合法的执行路径&…

分布式系统稳定性建设指南

来源: 中国信息通信研究院 系统稳定性能建设是一个系统化工程,需要硬件软件,需要从企业工程建设的全环节进行设计和实施,充分利用以混沌工程、全链路压测为代表的分布式稳定性保障技术,建设保障能力,改造运…

域名系统 DNS(计算机网络-应用层)

目录 互联网的域名结构 顶级域名 TLD(Top Level Domain) 域名服务器 域名系统 DNS 域名解析的过程 域名服务器的四种类型 本地域名服务器 DNS 协议 DNS缓存 DNS提供的其它服务 互联网的域名结构 域名系统 DNS (Domain Name System),实现主机名(域…

(三)HTTPTomcatServlet

一、HTTP HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 HTTP协议特点: (1)基于TCP协议:面向连接,安全 (2)基于请求-响应模型的…

漫画 | JavaScript杀死了编程......

上班路上,张大胖突然想到一个点子。晚上,张大胖开工,决定把好点子给实现了。JavaScript开发效率贼高,项目迅速完成。项目开源发布,获得了不少用户,收获了不少star,张大胖非常满意。转眼间&#…

【GlobalMapper精品教程】039:GM面状数据符号化设置案例教程

GM面状数据符号化设置案例教程。 文章目录 一、使用基于分类或自定义样式的默认样式二、对所有要素使用相同样式三、基于属性/名称值应用样式四、随机指定颜色给要素一、使用基于分类或自定义样式的默认样式 该样式类似于其他GIS软件的单一样式,即为数据加载的默认样式。加载…

Stable Diffusion攻略集(Stable Diffusion官方文档、kaggle notebook、webui资源帖)

文章目录第一部分一、 Features:Textual Inversion(文本反转)1.1 Textual Inversion 简介1.1.1 摘要1.1.2 算法1.1.3 模型效果1.2 Textual Inversion of webai1.2.1 预训练embedding用于图片生成1.2.2 训练embedding1.2.3 Finding embeddings…

【Redis】知识体系结构构建以及常见考题汇总

【Redis】知识体系结构构建以及常见考题汇总1、思维导图2、Redis体系结构:原理、部署2.1、Redis实现原理2.1.1、Redis中数据结构2.1.2、不同对象的数据类型(基本类型、特殊类型)2.2、Redis部署2.2.1、基本配置(缓存的更新、删除和…

【Linux】基础命令

目录 1.ls指令 2.pwd指令 3.cd指令 4.touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat指令 11.less指令 12. head和tail 13.date指令 14.grep指令 15.bc指令 16.重要的几个热键 1.ls指令 语法:ls 选项 …

Taro React组件开发(2) —— RuiEditor 富文本编辑器【兼容H5和微信小程序】

1. 富文本编辑器需求分析 需要实现图片上传显示,上传使用Taro的 chooseImage 和 uploadFile,完成图片的上传!!!文字的居左、居中、居右展示,使用格式化方法 format!!!文字的加粗、倾斜、下划线,使用格式化方法 format!!!2. 富文本编辑 获取提示文本 placeholder;…

【C++】string类常用函数接口

在使用库函数中的string类时,需要包含头文件#include 。 1.构造函数和拷贝构造 string s1;string s2("hello world");string s3(s2);下面通过VS调试的监视窗口看一下初始化之后的内容: 还有一种构造函数,是拷贝一个字符串的一部分…

Kubernetes 1.26 新功能 Pod 调度就绪特性解析

Kubernetes 1.26 新功能 Pod 调度就绪特性解析 Kubernetes 1.26 引入了 Pod 的一个新特性:scheduling gates。在 Kubernetes 中,调度门是告诉调度程序何时准备好考虑调度 Pod 的 keys。 它解决了什么问题? 当一个 Pod 创建时,调…

从发现SQL注入到ssh连接

前言: 某天,同事扔了一个教育站点过来,里面的url看起来像有sql注入。正好最近手痒痒,就直接开始。 一、发现时间盲注和源码 后面发现他发的url是不存在SQL注入的,但是我在其他地方发现了SQL盲注。然后改站点本身也可…

C++/Java调用C++动态链接库————附带示例和详细讲解

文章目录0 准备1 C调用动态链接库2 Java调用C动态链接库3 运行0 准备 在CMake中,使用如下的方法把代码编译成动态/静态链接库: # 设置项目名 project(getMatInfo)# 设置c版本 set(CMAKE_CXX_STANDARD 11)# 如果不填写SHARE,默认为静态链接…

Spring Security开发实践

Spring Security 是 Spring 家族中用于提供认证、授权和攻击防护功能的一套安全框架。它也是 Spring 应用在安全框架方面的公认标准。 Spring Security 安全框架适合为 Spring Boot 项目提供安全保护,所以如果您是个 Spring Boot 项目的开发人员,且正在寻…

Python 将视频按照时间维度剪切 | Python工具

目录 前言 环境依赖 代码 总结 前言 本文提供将视频按照时间维度进行剪切的工具方法,一如既往的实用主义。 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安装部署_阿良的博客-CSDN博客 本文主要使用到的不是ffmpeg&a…

基于Vue.js+Node问卷调查系统的设计与实现

作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云…

ORM框架

ORM框架可以做的两件事: 创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】操作表中的数据(不用写SQL语句) 1.安装第三方模块: pip3.9 install mysqlclient 2.创建数据库: 启动Mysql服务…

20221226编译Toybrick的TB-RK3588X开发板的Android12系统2-SDK预处理

20221226编译Toybrick的TB-RK3588X开发板的Android12系统2-SDK预处理 2022/12/26 16:40 结论: 1、风火轮技术团队的技术支持力度欠佳! 淘宝客服只能处理发货问题,发发SDK还可以,技术问题只能找联系方式 联系手机:18926…