HarmonyOS鸿蒙Next中ArkTS项目中的常量如何定义

HarmonyOS鸿蒙Next中ArkTS项目中的常量如何定义 针对固定参数常量,如固定Token值等,一般放到什么文件里,如何定义和引用呢?

6 回复

一般就放在这里

cke_310.png

其他页面直接Constants.MIN_DB使用,按提示自动导入即可。

import { Constants } from '相对路径/common/Constants';

更多关于HarmonyOS鸿蒙Next中ArkTS项目中的常量如何定义的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


学习了

常量建议都放在单独的ets文件内。再单个导出(export)

export class Constants {
  public static readonly VERSION: string = '111111'
  public static readonly TOKEN: string = '111111'
}

我一般都常量单独放在一个目录下,里面这么写的

在ArkTS中定义常量使用const关键字,例如:const PI: number = 3.14。常量必须在声明时初始化,且后续不可修改。对于对象类型,使用const声明的变量引用不可变,但其内部属性在未使用readonly修饰时可修改。

在HarmonyOS Next的ArkTS项目中,定义和使用常量有清晰的规范,主要目的是提高代码的可维护性和可读性。

1. 常量定义的位置 建议将项目级的公共常量(如固定的Token、API基础URL、通用配置键名等)集中管理。通常的做法是:

  • 在项目的 src/main/ets 目录下,创建一个专门的常量文件,例如 src/main/ets/common/constants.ets
  • 或者根据业务模块,在相应的目录下创建模块级的常量文件。

2. 常量的定义方式 在ArkTS中,使用 const 关键字声明常量。对于需要在多个文件中使用的常量,应使用 export 关键字将其导出。

示例 (constants.ets):

// 导出单个常量
export const API_BASE_URL: string = 'https://api.example.com';
export const DEFAULT_TIMEOUT: number = 30000;
export const FIXED_AUTH_TOKEN: string = 'Bearer your_static_token_here'; // 示例,生产环境敏感信息应更安全地管理

// 或者导出一个常量对象进行分组
export const AppConfig = {
  API_BASE_URL: 'https://api.example.com',
  DEFAULT_TIMEOUT: 30000,
  TOKEN: {
    FIXED_AUTH: 'Bearer your_static_token_here',
    KEY_STORE_KEY: 'auth_token'
  }
} as const; // 使用 `as const` 断言确保其成员为只读字面量

3. 常量的引用 在其他业务逻辑文件中,通过 import 语句导入并使用这些常量。

示例 (SomePage.ets 或某个Service文件):

// 导入单个常量
import { API_BASE_URL, FIXED_AUTH_TOKEN } from '../common/constants';

// 或者导入整个常量对象
import { AppConfig } from '../common/constants';

// 使用常量
let url = API_BASE_URL + '/user/profile';
let headers = {
  'Authorization': FIXED_AUTH_TOKEN
};

// 使用常量对象
let timeout = AppConfig.DEFAULT_TIMEOUT;
let authToken = AppConfig.TOKEN.FIXED_AUTH;

关键点说明:

  • 固定Token处理:对于如 FIXED_AUTH_TOKEN 这类真正固定不变的凭证(例如用于访问某些无需用户登录的公开API),上述方式是可行的。但绝大多数情况下,用户认证Token是动态获取和更新的,不应硬编码在常量文件中,而应使用 Preferences 或其它安全存储方式进行持久化管理。
  • 类型安全:ArkTS是静态类型语言,为常量明确定义类型(如 : string, : number)有助于在编译期发现错误。
  • as const 断言:在对象形式声明时使用 as const,可以使对象的所有属性成为深度只读(readonly),防止在代码中意外修改,这更符合常量的定义。

遵循此模式,可以使项目的配置和固定值管理变得清晰、统一且易于修改。

回到顶部