【TS】TypeScript 类型声明文件.d.ts

文章目录

TS文件类型

declare 关键字

使用已有的类型声明文件

【TS 内置的类型声明文件】

【第三方库的类型声明文件】

创建类型声明文件

为已有 JS 文件提供类型声明


TS 类型声明文件:用来为已存在的 JS 库提供类型信息。类型声明文件可以让我们不需要将JS重构为TS,就可以像用 TS 一样,有代码提示、类型保护等机制。

TS文件类型

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

  • .ts 文件:
  1. .ts 是 implementation(代码实现文件);        
  2. 既包含类型信息又可执行代码。
  3. 先编译为 .js 文件,然后,执行代码。
  4. 用途:编写程序代码。
  • .d.ts 文件:
  1. .d.ts 是 declaration(类型声明文件)。
  2. 只包含类型信息的类型声明文件,不能出现可执行代码
  3. 不会生成 .js 文件,仅用于提供类型信息。
  4. 用途:为 JS 提供类型信息。

declare 关键字

declare 是描述 TS 文件之外信息的一种机制,它的作用是告诉 TS 某个类型或变量已经存在,我们可以使用它声明全局变量、函数、类、接口、类型别名、类的属性或方法以及模块与命名空间。

在类型声明文件中,对于 type、interface 等只能在 TS 中使用的关键字,可以省略 declare 关键字;对于 let、function 等在 JS、TS 中都能用的关键字,应该使用 declare 关键字,明确指定此处用于类型声明。

使用已有的类型声明文件

【TS 内置的类型声明文件】

TS 为 JS 运行时可用的所有标准化内置 API 都提供了声明文件。

比如,在使用数组时,数组所有方法都会有相应的代码提示以及类型信息。

可以通过 Ctrl + 鼠标左键 来查看内置类型声明文件内容。

例如,forEach 方法的类型声明,在(lib.es5.d.ts)类型声明文件中。像 window、document 等 BOM、DOM API 也都有相应的类型声明(lib.dom.d.ts)。

【第三方库的类型声明文件】

目前,几乎所有常用的第三方库都有相应的类型声明文件。

第三方库的类型声明文件有两种存在形式:

1. 库自带类型声明文件:比如,axios。

2. 由 DefinitelyTyped 提供。https://github.com/DefinitelyTyped/DefinitelyTyped/

DefinitelyTyped 是一个 github 仓库,用来提供高质量 TypeScript 类型声明。

可以通过命令 npm i -D @types/包名 来下载该仓库提供的 TS 类型声明包。安装后,TS 也会自动加载该类声明包,以提供该库的类型声明。

创建类型声明文件

操作步骤:

  1. 创建 ***.d.ts 类型声明文件。
  2. 创建需要共享的类型,并使用 export 导出(TS 中的类型也可以使用 import/export 实现模块化功能)。
  3. 在需要使用共享类型的 .ts 文件中,通过 import 导入即可,导入时不加后缀 .ts(.d.ts 导入时,若路径下无同名 .ts 文件,后缀 .d 也可以省略(反例:demo.d.ts 和 demo.ts))。

index.d.ts

/*【index.d.ts】*/
type Props = { x: number; y: number }
export { Props }

demo.ts

/*【demo.ts】*/
import { Props } from './index';
let p1: Props = { x: 1, y: 2 }
// 同名情况
import { Point } from './demo.d';
let p2: Point = { x: 1, y: 2 }

为已有 JS 文件提供类型声明

将 JS 项目迁移到 TS 项目时,为了让已有的 .js 文件有类型声明,可以根据已有 js 脚本编写 .ts 类型声明文件。

utils.d.ts

// 为 utils.js 文件来提供类型声明
declare let count: number
declare let songName: string
interface Point {
  x: number
  y: number
}
declare let position: Point

declare function add(x: number, y: number): number
declare function changeDirection(
  direction: 'up' | 'down' | 'left' | 'right'
): void

type FomartPoint = (point: Point) => void
declare const fomartPoint: FomartPoint

// 注意:类型提供好以后,需要使用 模块化方案 中提供的
//      模块化语法,来导出声明好的类型。然后,才能在
//      其他的 .ts 文件中使用
export { count, songName, position, add, changeDirection, fomartPoint, Point }

utils.js

let count = 10
let songName = '大鱼'
let position = {
  x: 0,
  y: 0
}
function add(x, y) {
  return x + y
}
function changeDirection(direction) {
  console.log(direction)
}
const fomartPoint = point => {
  console.log('当前坐标:', point)
}
module.exports = { count, songName, position, add, changeDirection, fomartPoint }

demo.ts

.ts 文件在导入 .js 文件时,会自动加载与 .js 同名的 .d.ts 文件,以提供类型声明。

import { count, songName, add, Point } from './utils'

let p1: Point = {
  x: 10,
  y: 20
}
// 使用js方法变量
console.log('count', count); // count 10
console.log('songName', songName); // songName 大鱼
console.log('add()', add(1, 4)); // add() 5

TypeScript 教程——阮一峰·著

TypeScript 中文网

TypeScript 官网

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TypeScript中,.d.ts文件是用来描述JavaScript库或模块的声明文件。它的作用是为了在开发过程中提供代码提示、类型检查以及代码文档化等功能。 首先,我们需要确保项目中安装了TypeScript。然后,我们可以在项目中创建一个.d.ts文件,命名规则一般是将库的名称与后缀.d.ts结合,比如"jquery.d.ts"。 接下来,我们需要在.d.ts文件中编写对应库的声明。对于常见的库,往往有很多社区已经编写好的声明文件可供使用,我们可以在DefinitelyTyped上搜索并下载已有的声明文件。 如果找不到已经存在的声明文件,我们可以自行编写。一般来说,我们需要定义库的各种类型、接口、函数以及其他使用方法。可以通过查阅库的官方文档来了解库的API,并根据需要进行适当的声明。 完成编写后,我们可以将.d.ts文件放置在项目中合适的位置,例如与库文件在同一目录下,或者在项目根目录下的一个名为"typings"的文件夹中。 在项目中使用该库时,TypeScript会自动根据.d.ts文件提供代码提示和类型检查。我们只需要在需要使用库的文件中导入库的模块,并按照库的API进行使用即可。 总结来说,使用.d.ts文件的流程包括:安装TypeScript、创建.d.ts文件、编写库的声明、下载或编写完成声明文件后,将其放置在合适的位置,然后在项目中使用库的模块并享受TypeScript的强大功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值