模块

导出模块

模块导出使用关键字 export 关键字,语法格式如下:

1
2
3
4
// SomeInterface.ts 
export interface SomeInterface {
  // 代码部分
}

要在另外一个文件使用该模块就需要使用 import 关键字来导入:

1
import someInterfaceRef = require("./SomeInterface");

声明文件

常见到的 .d.ts 结尾的文件就是声明文件。

在这个文件中使用 export module 语法或者 export namespace 语法,在项目的其他地方进行引用时,就可以不需要引用完整路径进行引用,比如:

1
2
// dec.d.ts
declare module "Dec"
1
2
// ref.ts
import * as des from "Dec";

TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。

为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaScript 库和模块信息的声明文件。通过引用这个声明文件,就可以借用 TypeScript 的各种特性来使用库文件了。

比如使用 jQuery,我们需要使用 declare 关键字来定义它的类型,帮助 TypeScript 判断我们传入的参数类型对不对:

1
2
3
declare var jQuery: (selector: string) => any;

jQuery('#foo');

declare 定义的类型只会用于编译时的检查,编译结果中会被删除。