TypeScript基础篇三: TypeScript的命名空间
原创
©著作权归作者所有:来自51CTO博客作者zhuhuix的原创作品,请联系作者获取转载授权,否则将追究法律责任
TypeScript基础篇一: HelloWorld TypeScript
TypeScript基础篇二: 使用TypeScript编写接口和类
TypeScript基础篇三: TypeScript的命名空间
文章目录
一、背景
- 我们在创建项目时需要一种命名方式来组织代码,避免与其他对象产生命名冲突。因此,我们需要把代码包裹到一个命名空间内,而不是把它们放在全局命名空间下。本文章将介绍命名空间的应用方法。
二、命名空间的定义
- 命名空间最明确的目的就是解决重名问题。TypeScript 中命名空间使用 namespace 来定义,语法格式如下:
// 相同名字的接口与类在不同名字空间中是互不相干的
namespace myNameSpace{
export interface utils{ }
export class mathUtils{ }
}
namespace yourNameSpace{
export interface utils{ }
export class mathUtils{ }
}
- 如果我们需要在外部可以调用 myNameSpace中的类和接口,调用语法格式为:
let me=new myNameSpace.mathUtils()
let you=new yourNameSpace.mathUtils()
三、命名空间应用实例
- 创建utils.ts文件,在文件中定义一个命名空间Utils,导出接口MathUtil
/**
* 命名空间Utils中定义MathUtil接口,接口中含有加减乘除算法
*/
namespace Utils {
export interface MathUtil {
// 两数相加
add(x: number, y: number);
// 两数相减
subtract(x: number, y: number);
// 两数相乘
multiply(x: number, y: number);
// 两数相除
divide(x: number, y: number);
}
}
- 创建mathUtil.ts文件,在命名空间Utils,实现接口MathUtil的加减乘除算法
//如果一个命名空间在一个单独的 TypeScript 文件中,则应使用三斜杠 /// 引用它,语法格式如下:
/// <reference path = "utils.ts" />
namespace Utils {
export class MathUtils implements MathUtil {
constructor(){};
add(x: number, y: number) {
return x + y;
}
subtract(x: number, y: number) {
return x - y;
}
multiply(x: number, y: number) {
return x * y;
}
divide(x: number, y: number) {
if (y === 0) {
throw new Error("divide zero error.");
} else {
return x / y;
}
}
}
}
- 创建mathUtilTest.ts文件,测试MathUtil的加减乘除算法
/// <reference path = "mathUtil.ts" />
// 使用用命名空间Utils中的MathUtils类创建对象
let u = new Utils.MathUtils();
console.log("1+2=",u.add(1,2));
console.log("1-2=",u.subtract(1,2));
console.log("1*2=",u.multiply(1,2));
console.log("1/2=",u.divide(1,2));
- 使用 tsc 命令编译以上mathUtilTest.ts代码:
/// <reference path = "utils.ts" />
var Utils;
(function (Utils) {
var MathUtils = /** @class */ (function () {
function MathUtils() {
}
;
MathUtils.prototype.add = function (x, y) {
return x + y;
};
MathUtils.prototype.subtract = function (x, y) {
return x - y;
};
MathUtils.prototype.multiply = function (x, y) {
return x * y;
};
MathUtils.prototype.divide = function (x, y) {
if (y === 0) {
throw new Error("divide zero error.");
}
else {
return x / y;
}
};
return MathUtils;
}());
Utils.MathUtils = MathUtils;
})(Utils || (Utils = {}));
/// <reference path = "mathUtil.ts" />
var u = new Utils.MathUtils();
console.log("1+2=", u.add(1, 2));
console.log("1-2=", u.subtract(1, 2));
console.log("1*2=", u.multiply(1, 2));
console.log("1/2=", u.divide(1, 2));
- 运行以上js代码,得到如下结果: