ArkTS 模块及命名空间介绍
模块的导入和导出在实际开发中代码不会都写在一个文件里。如果所有代码都堆在一起后续想修改某个功能、找某个逻辑简直就是大海捞针因此在实际开发中通常会将代码拆分成多个文件这样管理和维护起来更加方便。模块是代码拆分、复用与隔离的核心机制一将复杂项目按功能业务拆分成多个独立文件每个文件就是一个模块通过 export 暴露模块内的接口、类、函数再通过 import 在其他模块中导入使用。在 ArkTS 中一个文件就是一个模块不同文件之间的代码是隔离的。通俗地讲在 A 文件中写的函数、类、变量在 B 文件里是无法直接使用的。编译器会报错提示“找不到内容”。这里在 Device 文件中定义了 Device 类在 Light 文件定义了 Light 类并且想要继承 Device 类。但编译器中却提示找不到 Device 类的错误因为两个文件的作用域是分开的互相不认识。// Device 文件 class Device { name: string ; constructor(name: string) { this.name name; } } // Light 文件 // 找不到名称Device class Light extends Device { name: string 灯; protected status: string off; turnOn(): void { this.status on; } }这里可以通过 export 和 import 关键字实现在 Light 文件中使用 Device 文件的代码。// Device 文件 export class Device { name: string ; constructor(name: string) { this.name name; } } // Light 文件 import { Device } from ./Device; class Light extends Device { name: string 灯; protected status: string off; turnOn(): void { this.status on; } }命名导入与导出直接在成员声明前加 export可导出多个成员导入时需用同名接收。// /module/Light文件 // 导出类灯光类 export class Light extends Device { name: string 客厅灯; } // 导出常量默认亮度 export const DEFAULT_BRIGHTNESS 50; // 导出函数创建默认配置的灯 export function createDefaultLight(name: string): Light { return new Light(name); } // 导出接口设备配置结构 export interface LightConfig { name: string; }导入命名导出的成员用 import{成员名 1, 成员名 2, …} from “模块路径”,成员名必须和导出时一致可以通过 as 重命名。// Test 文件 import { Light, createDefaultLight, DEFAULT_BRIGHTNESS, LightConfig as Config } from ../module/Light; let lightConfig: Config { name: , maxBrightness: DEFAULT_BRIGHTNESS } createDefaultLight(light);默认导出与导入一个模块只能有一个默认导出使用 export default 声明。导入时可以自定义名称无需与导出名称一致。默认导出适合模块的核心功能例如模块只暴露一个类。// /module/Light 文件 export default class Light extends Device { name: string 客厅灯; protected _status: string off; turnOn(): void { this._status on; } }导入默认导出的成员用 import 自定义名称 from “模块路径”名称可自定义无需和导出时一致。// Test 文件 import LightClass from ../module/Light’; let light new LightClass(客厅灯);动态导入动态导入是 ArkTS 中用于按需加载模块的核心机制会返回 Promise 对象并以异步方式实现模块的条件加载和运行时解耦适用于性能优化和复杂业务场景。例如有时导入的模块太大直接使用静态导入会让代码加载速度变慢。如果要导入的模块一开始不存在需要等待一段时间例如需要从网路上获取。这时就可以动态导入。动态导入的好处是按需加载或者根据条件加载可以提升加载速度让应用更加流畅。import(../module/Light) .then((lightImport) { lightImport.createDefaultLight(light); console.log(${lightImport.DEFAULT_BRIGHTNESS}); }) .catch((error: BusinessError) { console.error(error ${error.code} ${error.message}); });命名空间的概念和使用命名空间是通过 namespace 关键字定义的代码逻辑边界用于将相关类、接口、函数等组织在一起避免命名冲突并提高代码可维护性。namespace命名空间名称{export接口、变量、函数、类}namespace DeviceControl { // 导出类 export class Device { name: string ; } // 导出接口设备配置结构 export interface LightConfig { name: string; maxBrightness: number; } // 导出函数创建默认配置的灯 export function createDevice(): Device { return new Device(); } // 导出常量默认亮度 export const DEFAULT_BRIGHTNESS 50; }可以通过命名空间.成员名访问导出内容。// /module/DeviceNamespace文件 export namespace DeviceControl { // 导出类 export class Device { name: string ; } // 导出接口设备配置结构 export interface LightConfig { name: string; } // 导出函数创建默认配置的灯 export function createDevice(): Device { return new Device(); } // 导出常量默认亮度 export const DEFAULT_BRIGHTNESS 50; }// Test文件 import { DeviceControl } from ../module/DeviceNamespace; let device new DeviceControl.Device(light); let lightConfig: DeviceControl.LightConfig { name: , maxBrightness: DeviceControl.DEFAULT_BRIGHTNESS } let airConditioner DeviceControl.createDevice(airConditioner);

相关新闻

C++ INI文件读写器实现:从设计到源码的完整指南

C++ INI文件读写器实现:从设计到源码的完整指南

1. 项目概述:为什么INI文件在C项目中依然重要?在接手一个C项目,尤其是涉及到配置管理时,我们常常会面临一个选择:配置文件用什么格式?XML、JSON、YAML,还是INI?尽管INI格式看起来有些…

2026/7/25 6:56:01 阅读更多 →
大模型开发实战:超越API调用的技术纵深与优化策略

大模型开发实战:超越API调用的技术纵深与优化策略

1. 大模型开发的真实面貌:超越API调用的技术纵深上周帮一个创业团队评审他们的AI产品时,发现工程师把所有业务逻辑都塞进了prompt模板里。当我问及推理优化策略时,对方很自然地回答:"用GPT-4不就行了?"这种认…

2026/7/25 6:56:01 阅读更多 →
C++布隆过滤器实现:原理、代码与实战避坑指南

C++布隆过滤器实现:原理、代码与实战避坑指南

1. 布隆过滤器:从“可能没有”到“肯定有”的智慧在C的世界里,STL(Standard Template Library)是我们处理数据结构和算法的瑞士军刀。但有时候,标准库提供的容器,如std::set或std::unordered_set&#xff0…

2026/7/25 6:55:01 阅读更多 →

最新新闻

联邦学习中的模型异构性解决方案:pFedES技术解析

联邦学习中的模型异构性解决方案:pFedES技术解析

1. 项目背景与核心挑战在联邦学习领域,模型异构性一直是阻碍个性化服务落地的关键瓶颈。传统同构联邦学习假设所有参与方采用相同模型架构,这在实际商业场景中几乎不存在——不同终端设备的算力差异、数据分布特性以及业务需求,必然导致模型结…

2026/7/25 7:12:06 阅读更多 →
MySQL 8.0 Windows安装配置全指南:从下载到验证的完整流程

MySQL 8.0 Windows安装配置全指南:从下载到验证的完整流程

1. 这篇文章真正要解决的问题如果你正在为安装MySQL而头疼,那么这篇文章就是为你准备的。无论是刚接触后端开发的新手,还是需要在本地快速搭建测试环境的老手,安装配置数据库往往是第一个拦路虎。你可能会遇到各种问题:官网下载速…

2026/7/25 7:12:06 阅读更多 →
YOLOv8与C#结合的AGV动态避障系统实践

YOLOv8与C#结合的AGV动态避障系统实践

1. 项目背景与核心挑战在工业自动化领域,AGV(自动导引车)的导航性能直接决定了整个物流系统的效率。传统基于磁条或二维码的导航方式在高动态环境中显得力不从心——当仓库货架频繁移动、人员走动复杂时,固定路径的AGV很容易陷入&…

2026/7/25 7:12:06 阅读更多 →
Linux桌面Wayland协议一键切换脚本:解决Ubuntu 24.04应用兼容性问题

Linux桌面Wayland协议一键切换脚本:解决Ubuntu 24.04应用兼容性问题

这次我们来看一个专门解决 Linux 桌面显示协议兼容性问题的脚本项目:GXDE OS 中的 wayland.sh 。对于很多从 Ubuntu 22.04 升级到 24.04 的用户来说,一个最头疼的问题就是系统默认启用了 Wayland 显示协议,这直接导致了一批依赖 X11 的应用程序,比如腾讯会议、VMware Too…

2026/7/25 7:12:06 阅读更多 →
深入Facebook Proxygen:C++高性能HTTP服务器框架源码解析与实践

深入Facebook Proxygen:C++高性能HTTP服务器框架源码解析与实践

1. 项目概述:为什么是Proxygen?如果你正在寻找一个能让你深入理解现代高性能C HTTP服务器框架内部运作的项目,或者你厌倦了使用现成的Web框架(如Nginx、Apache)却对其内部黑盒感到好奇,那么直接上手研究Fac…

2026/7/25 7:12:06 阅读更多 →
清华6M参数视听分离模型:SOTA精度与6倍加速

清华6M参数视听分离模型:SOTA精度与6倍加速

1. 项目背景与核心突破在多媒体信号处理领域,视听分离(Audio-Visual Separation)一直是个极具挑战性的任务。传统方法往往需要消耗大量计算资源,难以在实时场景中应用。清华团队最新发布的这个6M参数模型,不仅将分离质…

2026/7/25 7:11:06 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻