企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] 当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。 # 什么是声明文件 声明文件必需以`.d.ts`为后缀。 一般来说,ts 会解析项目中所有的`*.ts`文件,当然也包含以`.d.ts`结尾的文件。所以当我们将`jQuery.d.ts`放到项目中时,其他所有`*.ts`文件就都可以获得`jQuery`的类型定义了。 # npm 包 npm 包的声明文件主要有以下几种语法: * `export` 导出变量 * `export namespace` 导出(含有子属性的)对象 * `export default` ES6 默认导出 * `export =` commonjs 导出模块 # 常见声明 # `declare namespace` 声明(含有子属性的)全局对象 # `declare module` 扩展原有模块 如果是需要扩展原有模块的话,需要在类型声明文件中先引用原有模块,再使用`declare module`扩展原有模块: ~~~ts // types/moment-plugin/index.d.ts import * as moment from 'moment'; declare module 'moment' { export function foo(): moment.CalendarKey; } ~~~ # `/// <reference />` 三斜线指令 随着 ES6 的广泛应用,现在已经不建议再使用 ts 中的三斜线指令来声明模块之间的依赖关系了。 但是在声明文件中,它可以用来导入另一个声明文件。 类似于声明文件中的`import`。仅当在以下几个场景下,我们才需要使用三斜线指令替代`import`: * 当我们在**书写**一个全局变量的声明文件时 * 当我们需要**依赖**一个全局变量的声明文件时 # 参考 [声明文件](https://ts.xcatliu.com/basics/declaration-files.html) [TypeScript 类型声明完全指南 | 王鹏飞 (pengfeixc.com)](https://www.pengfeixc.com/blogs/javascript/typescript-declarations)