一、.d.ts是干嘛的

.d.ts文件是ts用来声明变量,模块,type,interface等等的,那在这种后缀的ts文件声明这些东西和在纯ts文件声明这些东西又什么区别呢?

在.d.ts声明变量或者模块等东西之后,在其他地方可以不用import导入这些东西就可以直接用,用,而且有语法提示。

但是也不是说创建了.d.ts文件,里面声明的东西就能生效了,毕竟归根到底也是.ts文件,需要预编译,所以需要在tsconfig.json文件里面的include数组里面添加这个文件

include数组里面可以不用写.d.ts文件的绝对路径,可以通过glob通配符,匹配这个文件所在的文件夹或者是“祖宗级别”文件夹。

支持的glob通配符有:

*匹配0或多个字符(不包括目录分隔符)

?匹配一个任意字符(不包括目录分隔符)

**/递归匹配任意子目录

具体tsconfig.json配置请看这https://www.tslang.cn/docs/handbook/tsconfig-json.html

二、declare是干嘛的

.d.ts 文件中的顶级声明必须以 “declare” 或 “export” 修饰符开头。

通过declare声明的类型或者变量或者模块,在include包含的文件范围内,都可以直接引用而不用去import或者import type相应的变量或者类型。

1.declare声明一个类型

declare type Asd {name: string;
}

在include包含的文件范围内可以直接使用Asd这个type

2.declare声明一个模块

最经典的声明模块应该是这样了

declare module '*.css';
declare module '*.less';
declare module '*.png';

在编辑ts文件的时候,如果你想导入一个.css/.less/.png格式的文件,如果没有经过declare的话是会提示语法错误的

3.declare声明一个变量

这个什么情况下会用到呢?假如我在项目中引入了一个sdk,这个sdk(我们以微信的sdk为例)里面有一些全局的对象(比如wx),但是如果不经过任何的声明,在ts文件里面直接用wx.config()的话,肯定会报错。

有一句说法我蛮喜欢的:declare就是告诉TS编译器你担保这些变量和模块存在,并声明了相应类型,编译的时候不需要提示错误!

4.declare声明一个作用域

declare namespace API {interface ResponseList {}
}

声明完之后在其他地方的ts就可以直接API.ResponseList引用到这个接口类型

三、注意

1…d.ts文件顶级声明declare最好不要跟export同级使用,不然在其他ts引用这个.d.ts的内容的时候,就需要手动import导入了

2.在.d.ts文件里如果顶级声明不用export的话,declare和直接写type、interface效果是一样的,在其他地方都可以直接引用

declare type Ass = {a: string;
}
type Bss = {b: string;
};

可以直接使用Ass和Bss作为某个变量的类型

ts的.d.ts和declare究竟是干嘛用的相关推荐

  1. ts 手动实现 ts 中的map

    ts 手动实现 ts 中的map 实现的功能如下: 按照键,删除对应的键值对 del() 循环每一个键值对 forEach() 得到当前键值对的数量 size 判断某个键是否存在 has() 重新设置 ...

  2. element-plus打包报错/vue3.0+vite+ts别名引入ts文件报错

    element-plus报错内容 报错原因如下 vue-tsc 是对ts类型做检测的 element对ts支持并不是很友好所以报错 但是不影响正常使用 Cannot find name 'Nullab ...

  3. TS学习(八) :TS中的类

    TS中类的书写 以前在js中书写类是这样的,然后我们在加上TS的类型检查你会发现报错了 class User {constructor(name:string,age:number) {this.na ...

  4. ts入门笔记——ts类型声明和类型断言

    最近玩csdn比较少,欢迎关注我的掘金:杨灿就是杨火山 简单快速上手ts的学习路径: 一.熟悉掌握熟悉的强类型定义,初步学习编写强类型代码. 学习ts的声明变量类型,能够初步编写强类型代码: 学习ts ...

  5. TS学习笔记 TS基本类型

    基本类型 类型声明 类型声明是TS非常重要的一个特点 通过类型声明可以指定TS中变量(参数.形参)的类型 指定类型后,当为变量赋值时,TS编辑器会自动检查是否符合类型声明,符合则赋值,否则报错 指定类 ...

  6. “血洗”Twitter,“杀疯了”的马斯克究竟想干啥?

    周末有个朋友给我说:马斯克"血洗"Twitter了,你有什么评价? 我去搜了一下,果然,马斯克"杀疯了". 440亿美元收购Twitter以后,他立刻解雇了公司 ...

  7. 产品经理究竟是干嘛的

    产品经理究竟是干嘛的? 简单来说,产品经理主要的工作就是:规划.设计产品,对产品研发过程的控制,最终把产品卖出去的一个过程. 而产品经理,基于服务的对象不同,主要分为两种:to b (针对企业)和to ...

  8. 大数据时代,数据仓库究竟是干嘛的?

    前言 无论你是否专门从事大数据开发,作为一个开发人员,应该都听说过数据仓库的概念,那你知道为什么会出现数据仓库?数据仓库究竟是干嘛的吗?有什么价值和意义呢?那么本文就带到入门,揭开数据仓库的面纱. 数 ...

  9. 【TS】1321- 学会 TS infer,写起泛型真香!

    阿宝哥精心准备的<轻松学 TypeScript> 视频教程已经更新到第十一期了,通过形象生动的动画,让你轻松搞懂 TypeScript 的难点和核心知识点! 你知道如何获取 T0 数组类型 ...

  10. TS中ts和.d.ts文件的区别

    .ts文件 1.既包含类型信息又可执行代码. 2.可以被编译成js文件,然后执行代码. 3.编写程序代码的地方 .d.ts文件 1.只包含类型信息的类型声明文件. 2.不会生成js文件,仅用于提供类型 ...

最新文章

  1. Oracle XQuery 过滤XML查询SQL
  2. Objective-C中NSString转NSNumber的方法
  3. Android--WebView显示Html,让其中的图片适应屏幕宽度
  4. 增加DIA进程的方法
  5. VTK:可视化算法之TensorAxes
  6. Python 程序员经常犯的 10 个错误
  7. 0076-小升初1:生日蛋糕
  8. 实用常识 | 文件都在C盘,一点儿都不圆润,盘它!
  9. 多玩家游戏设计注意思的地方(转)
  10. opencv的Mat中step
  11. 2022年上半年网络工程师下午真题及答案
  12. 一文了解常用效率记笔记软件(超过20款含有图片和双向链笔记)
  13. 远程访问树莓派的摄像头实现远程监控
  14. linux 极路由救砖,极路由刷机教程 极路由救砖方法图文详解
  15. ImportError: cannot import name 'imsave' from 'scipy.misc' (C:\Users\DELL\AppData\Roaming\Python\Pyt
  16. nginx proxy_temp 文件夹权限问题
  17. 【直播笔记】在临床研究中,如何利用SAS做更好的统计报表输出
  18. iOS系统3DTouch全解析
  19. 企业如何建设CRM管理理念
  20. 金融伦理学(Financial Ethcs)笔记

热门文章

  1. Spring Boot任务管理
  2. 只查看ett.txt文件(100行)内第20行到30行的内容
  3. SQL 已死,NoSQL才是王道?醒醒吧,别瞎说八道了
  4. 用 dfuse `transaction_lifecycle` 端点跟踪任何交易,包括延期交易
  5. 编码消耗率CCR,“上帝代码”,反射,简洁代码
  6. 全息投影手机Alo将引领未来趋势!全息3d 网
  7. 10个问题说清楚 什么是元宇宙 - 十问元宇宙:如何将抽象的概念具象化?
  8. 老男孩教育运维班100台规模集群全网数据备份项目上机实战
  9. 安卓 ANR 原因,解决方法
  10. 【Matlab代码】Sierpinsk地毯