TypeScript-命名空间
命名空间概述
- 命名空间可以看做是一个微型模块
- 当我们想把相关的业务代码写在一起, 又不想污染全局空间的时候, 我们就可以使用
命名空间
- 本质就是定义一个大对象, 把变量/方法/类/接口 ... 等,都放里面
命名空间和模块区别
- 在程序内部使用的代码, 可以使用命名空间封装和防止全局污染
- 在程序内部外部使用的代码, 可以使用模块封装防止全局污染
- 总结: 由于模块也能实现相同的功能, 所以大部分情况下用模块即可
博主假设有这么一个需求: 定义一个检验传入的参数是否为 a-z
的功能。首先来分析一下该功能如果定义在当前 ts 文件当中会造成污染全局的问题,其实可以利用命名空间来解决该污染问题如下:
namespace Validation {
const lettersRegexp = /^[A-Za-z]+$/;
export const LettersValidator = (value) => {
return lettersRegexp.test(value);
}
}
console.log(Validation.LettersValidator('abc'));
console.log(Validation.LettersValidator(123));
如上代码需要注意的就是需要将外界需要使用的函数或者属性都需要通过 export
进行导出外界才可以进行调用,如上的命名空间我是定义在同一个 ts 文件当中的,那么没有定义在同一个文件当中该如何编写呢?首先需要创建一个 ts 文件来进行存储命名空间编写的功能性代码如下:
namespace Validation {
const lettersRegexp = /^[A-Za-z]+$/;
export const LettersValidator = (value) => {
return lettersRegexp.test(value);
}
}
然后在需要使用该命名空间的地方通过 /// <reference path="xxx"/>
的方式进行使用:
/// <reference path="./test.ts"/>
console.log(Validation.LettersValidator('abc'));
console.log(Validation.LettersValidator(123));
然后在通过 tsc --outFile index.js index.ts
来进行打包,打包之后的结果如下:
- tsc --outFile:第一个参数为:打包之后的文件存储的位置
- tsc --outFile:第二个参数为:需要打包哪个文件
标签:
TypeScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具