typescript总结笔记(5)命名空间、模块


一、命名空间和模块

1. 命名空间的意义

原先叫内部空间。

当多人开发同一文件时可能会造成重名或覆盖等问题。此时可以使用namespace在同一文件里进行不同开发。即使方法名称相同,但在不同的namespace中就可以避免互相覆盖。

  • namespace中定义的东西只能在该namespace中使用。若需要在外部使用则需要先export
  • 在别的namespace中使用该namespace的方法,需要importimport可以在namespace外使用。
  • namespace可以导出到其他文件使用,方法有两种:
    • 可以使用模块(原先叫外部空间)导出与导入(exportimport),
    • 还有一种不是很推荐的方法,用三斜线指令导入。/// <reference path = "SomeFileName.ts" />
    • 其实命名空间导出到其他文件使用这种事情,我本身就不是很推荐。。。这种情况可以直接用模块了。

代码演示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace Utils {
function isString(value: unknown) {
return typeof value === "string";
}
export function isStringForExport(value: unknown) {
return typeof value === "string";
}
isString("aaa"); // true
}

// `import`可以在`namespace`外使用。
import isStr = Utils.isStringForExport;

// Utils.isString('aaa') // 报错,未导出的方法不能在命名空间外部使用。
Utils.isStringForExport("sfsdf"); // true

namespace App {
// 可以从别的命名空间导入方法,比如说Utils.isStringForExport方法名过长,则可以用import为其重命名并使用
// import 也可以在命名空间外部使用。
import isString = Utils.isStringForExport;
isString("aaa"); // true
}

2. 模块

原先叫外部空间。

export import,如果说命名空间是在一个文件内的模块化,那外部空间就是文件与文件之间的模块化。

没啥好说的,和js一样。之前写过。