ts的.d.ts和declare究竟是干嘛用的

52 篇文章 0 订阅

一、.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作为某个变量的类型

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`declare module` 是 TypeScript 中的一个关键字,用于声明一个模块(module)。模块是一种将代码封装起来,以便在其他文件中进行引用和使用的方式。 当我们需要使用第三方模块或者库时,通常需要安装相应的类型声明文件(.d.ts)来告诉 TypeScript 如何理解这些模块的类型。在某些情况下,我们可能需要添加一个新的类型声明文件来声明一个模块。 首先,我们需要创建一个新的文件,并将其命名为你想要声明的模块的名称加上 `.d.ts` 后缀,例如 `myModule.d.ts`。 然后,在这个文件中使用 `declare module` 关键字来声明这个模块。例如,假设我们要声明一个名为 `myModule` 的模块,可以按照以下方式编写声明文件: ```typescript declare module 'myModule' { export function myFunction(): void; export const myVariable: string; } ``` 上面的代码中,我们使用 `declare module 'myModule'` 来声明了一个名为 `myModule` 的模块。在模块中,我们还可以使用 `export` 关键字来声明模块中的函数、变量等的类型。 在其他 TypeScript 文件中,我们可以通过 `import` 语句来引入这个模块,并使用其中的函数或变量。例如: ```typescript import { myFunction, myVariable } from 'myModule'; myFunction(); // 调用声明的函数 console.log(myVariable); // 打印声明的变量 ``` 通过以上步骤,我们成功地添加了一个新的类型声明文件,来声明一个模块。这样,在项目中的其他文件中,就可以使用这个模块并享受 TypeScript 带来的类型检查和自动提示的好处了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值