Skip to content

TypeScript 中命名空间与模块的理解?区别?

模块

任何包含顶级 import 或者 export 的文件都被当成一个模块

如果一个文件不带有顶级的import或者export声明,那么它的内容被视为全局可见的

ts
export const a = 1
export type Person = {
    name: String
}
ts
import { a, Person } from './a'

命名空间

命名空间就是解决重名问题

命名空间定义了标识符的可见范围,一个标识符可在多个名字空间中定义,它在不同名字空间中的含义是互不相干的

ts
namespace Letter {
  export let a = 1;
  export let b = 2;
  export let c = 3;
  // ...
  export let z = 26;
}