首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >TypeScript >TypeScript 中的声明文件(.d.ts)是什么?如何使用?

TypeScript 中的声明文件(.d.ts)是什么?如何使用?

词条归属:TypeScript

1. 声明文件的概念

  • 声明文件(.d.ts)只包含类型信息,不包含任何可执行代码
  • 它们告诉 TypeScript 编译器外部 JavaScript 代码的结构和类型
  • 声明文件在编译时被完全擦除,仅用于类型检查和 IDE 智能提示

2. 环境声明

  • 使用 declare 关键字声明在运行时存在但不在当前文件中定义的变量、函数、类或模块
  • 例如 declare const __APP_VERSION__: string 声明一个全局常量
  • 环境声明不会验证运行时是否真的存在该值,如果缺失会导致运行时错误

3. 为第三方库声明类型

  • 当使用的 JavaScript 库没有自带类型定义时,可以创建声明文件描述其 API
  • 例如为 lodash 声明类型:declare module "lodash" { export function chunk<T>(array: T[], size: number): T[][]; }
  • 声明文件应放在 .d.ts 文件中,并在 tsconfig.json 的 include 范围内

4. DefinitelyTyped 与 @types

  • DefinitelyTyped 是一个社区维护的声明文件仓库,包含数千个流行 JavaScript 库的类型定义
  • 通过 npm install --save-dev @types/library-name 安装
  • 安装后 TypeScript 会自动识别并加载这些类型定义
  • 优先使用包自带的类型定义(bundled types),因为它们与包版本始终匹配

5. 生成声明文件

  • 在 tsconfig.json 中启用 "declaration": true,编译时会自动生成 .d.ts 文件
  • 配合 "declarationMap": true 生成声明文件的 source map,支持"跳转到定义"功能
  • 使用 "emitDeclarationOnly": true 可以只生成声明文件,不生成 JavaScript 输出

6. 模块增强

  • 使用 declare module "module-name" 为已有类型的模块添加新的类型定义
  • 与声明合并结合,可以扩展第三方库的类型而不修改原始定义
  • 例如为 Express 的 Request 对象添加自定义属性
相关文章
如何编写 Typescript 声明文件
使用TypeScript已经有了一段时间,这的确是一个好东西,虽说在使用的过程中也发现了一些bug,不过都是些小问题,所以整体体验还是很不错的。
贾顺名
2019-12-09
2.7K0
Typescript中的复杂类型声明
Typescript为javascript加入了众多类型声明语法,灵活使用可使代码变得健壮,不严谨的类型声明会带来后期的维护麻烦。本篇假设读者已经学会ts的基础类型声明语法,包括type、interface、extends和泛型,在此基础上,聊一聊一些更加复杂的类型声明场景以及解决办法。
腾讯IVWEB团队
2020-06-28
8.7K1
如何用typescript 来写一个jquery 插件的 d.ts
1、Jquery 方法  。比如$.ajax( )    $.trim( )   它们特点就是直接绑在jquery 自身上。
申君健
2018-09-21
3.2K0
总结TypeScript 的一些知识点:TypeScript 声明文件
TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaScript 库和模块信息的声明文件。通过引用这个声明文件,就可以借用 TypeScript 的各种特性来使用库文件了。
iOS程序应用
2023-05-26
7130
JavaScript中的后置声明是什么?
刚开始接触JavaScript时,大家可能都碰到过后置声明这个词。学习这个词的定义之前,让我们先看一个例子。下面我们先创建一个函数再调用:
疯狂的技术宅
2019-03-27
1.9K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券