定义命名空间:
使用 namespace 关键字可以定义一个命名空间。在命名空间中可以包含变量、函数、类等。
// mathOperations.ts
namespace MathOperations {
export function add(a: number, b: number): number {
return a + b;
}
export function subtract(a: number, b: number): number {
return a - b;
}
}
引用命名空间:
在其他文件中,可以使用 /// <reference path="path/to/file.ts" /> 指令引用命名空间所在的文件。
/// <reference path="mathOperations.ts" />
// app.ts
let sum = MathOperations.add(10, 5);
console.log(sum); // 输出: 15
使用 import:
可以使用 import 关键字导入命名空间中的成员,这样就不需要使用 /// <reference> 指令了。
// mathOperations.ts
namespace MathOperations {
export function add(a: number, b: number): number {
return a + b;
}
export function subtract(a: number, b: number): number {
return a - b;
}
}
export = MathOperations;
// app.ts
import MathOperations = require('./mathOperations');
let sum = MathOperations.add(10, 5);
console.log(sum); // 输出: 15
嵌套命名空间:
命名空间可以嵌套,形成层级结构,以更好地组织代码。
namespace Geometry {
export namespace Shapes {
export class Circle {
constructor(public radius: number) {}
}
}
}
// 使用
let circle = new Geometry.Shapes.Circle(5);
console.log(circle.radius); // 输出: 5
别名与整体导入:
可以使用 import 关键字创建别名,并通过整体导入将命名空间的所有成员绑定到一个别名上。
// mathOperations.ts
namespace MathOperations {
export function add(a: number, b: number): number {
return a + b;
}
export function subtract(a: number, b: number): number {
return a - b;
}
}
export = MathOperations;
// app.ts
import * as math from './mathOperations';
let sum = math.add(10, 5);
console.log(sum); // 输出: 15
这些是 TypeScript 中命名空间的基本概念和用法。在较大的代码库中,使用命名空间可以帮助你组织和管理代码,避免全局命名冲突,提高代码的可维护性。然而,随着 ES6 模块系统的逐渐普及,推荐在新项目中使用模块来替代命名空间。
转载请注明出处:http://www.zyzy.cn/article/detail/4706/TypeScript