TypeScript - 外部声明
在构建 TypeScript 项目时,你可能会使用到一些用 JavaScript 编写的第三方库。为了在 TypeScript 中正确地使用这些库,并享受类型检查和智能提示的优势,你需要为这些库提供类型信息。这就是 外部声明(Ambient Declarations) 的用途。
外部声明使用 declare
关键字来描述外部代码库的类型信息。这些声明不会被编译成 JavaScript 代码,它们仅存在于编译阶段,帮助 TypeScript 编译器进行类型检查。
什么是外部声明
外部声明是指在 TypeScript 中为已经存在于其他地方的变量、函数、类或模块提供类型信息。通过使用 declare
关键字,你可以告诉 TypeScript 编译器这些实体的类型,而无需提供具体的实现。
以下是一个使用 declare
关键字声明全局函数的示例:
declare function fetch(url: string): Promise<Response>;
在这个例子中,我们声明了一个名为 fetch
的全局函数,它接受一个字符串类型的参数 url
,并返回一个 Promise<Response>
类型的对象。
外部模块声明
对于外部模块,TypeScript 提供了模块声明的语法,可以为整个模块定义类型。
假设你有一个名为 math-lib
的 JavaScript 模块,提供了一个 add
函数。你可以为它创建一个类型声明文件 math-lib.d.ts
,内容如下:
math-lib.d.ts
declare module 'math-lib' {
export function add(a: number, b: number): number;
}
然后,在你的 TypeScript 文件中,你可以像这样使用该模块:
import { add } from 'math-lib';
console.log(add(2, 3)); // 输出: 5
通过这种方式,TypeScript 能够识别 math-lib
模块,并为其提供类型检查和智能提示。