ts 对象合并 不允许重名
时间: 2024-09-06 18:05:38 浏览: 82
TypeScript(TS)通过命名空间(namespace)来实现类和接口的合并以及避免名称冲突。命名空间内的非export成员只在其内部可见,而export成员则可以跨命名空间访问。当尝试在一个命名空间外部访问一个未导出的成员时,会抛出错误[^1]。
例如,考虑下面的代码:
```typescript
// 命名空间N
namespace N {
const a = 0;
export function foo() {
console.log(a); // 正确,a仅在这个命名空间内可用
}
}
// 另一个命名空间M试图访问N的a
namespace M {
import * as NS from './N'; // 导入整个N命名空间
// foo是可以访问的,但直接访问a会报错
NS.foo(); // 正确
console.log(NS.a); // 报错,因为a是非export的
}
```
这里可以看到,`foo()`由于是export的,所以在`M`命名空间中也可以调用,但`a`由于没有export,所以不能在其他命名空间中直接访问[^2]。
阅读全文