当前位置: 首页 > news >正文

谈谈 typescript 中 namespace 的理解

在 TypeScript 中,namespace 是一种将代码组织到逻辑组中的方式。它主要用于避免全局命名空间污染,并帮助开发者更好地组织和管理代码。尽管现代 TypeScript 开发中更推荐使用模块(import/export),但在某些场景下(尤其是旧项目或需要兼容性时),namespace 仍然有其用途。

我的理解是, namespace 相当与 模块化的思想,因为那时候 js 的 module 还没有出来,所以 ts 出了这种功能,不过现在随着 js (import/export)的出现,namespace 尽量不要使用了,只是如果在一些以前的项目中看到,可以作为了解。

通过 namespace 我们引用其他文件的方式为 

/// <reference path="路径" />

要主要前面有 三个 ///

下面我举个例子,来看一下代码和应用

我现在在同一目录下有4个文件,分别是 hello.ts,trim.ts,测试.html,tsconfig.json,还有一个文件夹 dist

trim.ts:

namespace Greeter {
  export const value = 'Hello, World!'
}

hello.ts:

/// <reference path="trim.ts" />
namespace Greeter {
  export function trimFun() {
    console.log(`${value}, World!`)
  }
}

Greeter.trimFun()

测试.html:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>

<body>
	<h1>测试的页面</h1>
	<script src="./dist/bundle.js"></script>
</body>

</html>

tsconfig.json:

{
  "compilerOptions": {
    "module": "none",
    "target": "ES5",
    "outFile": "./dist/bundle.js"
  }
}

之后,我们在当前目录中打开终端,输入 tsc,然后打开html文件

可以看到,我们在 hello.ts 中使用了 trim.ts 中定义的一个 value 值

namespace 使用值得主要的是 
  • export 关键字用于导出命名空间中的成员,使其可以在命名空间外部访问。
  • 如果没有用 export,命名空间中的成员是私有的,无法从外部访问。

下面来说说 Namespace 和 Module 的一些区别:

特性NamespaceModule
文件范围全局范围文件范围
导入/导出机制手动引用 (/// <reference path="..."/>)使用 import/export
推荐使用场景旧项目或小型脚本现代 TypeScript 项目
是否会污染全局命名空间

相关文章:

  • AQchat
  • Vite配置postcss-px-to-viewport
  • 代理模式简述
  • 贪心算法(19)(java)重构字符串
  • 银河麒麟系统添加开机自启动
  • 【AI】使用Huggingface模型实现文本内容摘要器
  • DeepSeek 接入 Word 完整教程
  • shell 编程之循环语句
  • UNet深度学习实战遥感图像语义分割
  • 孟加拉slot游戏出海代投FB脸书广告策略
  • HTTP协议入门
  • c# 委托和事件的区别及联系,Action<T1,T2>与Func<T1,T2>的区别
  • RTX 5060 Ti 3DMark跑分首次流出:比RTX 4060 Ti快20%
  • JVM——运行时数据区
  • Linux内核中struct net_protocol的early_demux字段解析
  • 谷歌A2A与Anthropic MCP: AI 智能体互补双协议
  • 【MySQL】MVCC工作原理、事务隔离机制、undo log回滚日志、间隙锁
  • mac中的zip文件压缩与压缩文件中指定目录删除
  • 【话题讨论】Python + AI图像生成实战:AI图像生成——用代码点亮数字艺术
  • Uipath获取最新下载文件
  • 礼来公布口服降糖药积极结果,或年底前提交用于体重管理上市申请
  • 为护航企业“出海”,“无问西东·中外商会”海上沙龙举行
  • 谁在地铁里阅读?——对话上海地铁上的读书人
  • 日本央行行长:美关税政策将冲击日本经济
  • 英国称担忧中国无人机拍摄英国重要基建高清图像,外交部回应
  • 首批换药患者已出现,两大减肥药巨头比拼的是什么?