1、.d.ts是干嘛的
.d.ts文件是ts用来声明变量,模块,type,interface等等,声明变量之后,在其他地方可以不用import导入这些东西就可以直接使用,并且有语法提示。有一个重要前提tsconfig.json
文件里的include
需要添加这些文件路径,不需要是绝对路径,匹配这个文件所在的文件夹或者祖宗级别的文件夹,可以通过glob通配符。
glob通配符:
*匹配0或者多个字符(不包括目录分隔)
匹配一个任意字符(不包括目录分隔)
**/递归匹配任意子目录
2、declare是干嘛的
.d.ts文件中的顶级声明必须以“declare”或“export”修饰符开头
通过“declare”声明的类型或者变量或者模块,在include包含的文件范围内,都可以直接引用而不用去import或者import type相应的变量或者类型。
(1)declare声明一个类型
declare type Admin {
name: string;
}
在include包含的文件范围内可以直接使用Admin这个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引用到这个接口类型。
3、注意
(1).d.ts文件顶级声明declare最好不要跟export同级使用,不然其他ts文件引用该文件的内容时就需要手动import导入
(2)在.d.ts文件里如果顶级声明不用export的话,declare和直接写type、interface效果是一样的,其他地方可以直接引用。
declare type Add = {
a: string;
}
type Bdd = {
b: string;
}
可以直接使用Add和Bdd作为某个变量的类型
网友评论