在TypeScript 和 JavaScript中,私有属性 HarmonyOS 鸿蒙Next

在TypeScript 和 JavaScript中,私有属性 HarmonyOS 鸿蒙Next 【设备信息】Mate 60
【API版本】Api14
【DevEco Studio版本】5.0.7.200
【问题描述】

在TypeScript 和 JavaScript中,如果一个对象是在一个文件(A文件)中作为私有成员(比如在一个类的私有属性中)被实例化的,那么这个对象本身是不能直接从另一个文件(B文件)中导入并使用的。私有成员(属性或方法)的访问是受限的,仅限于定义它们的类内部。 如何解决呢

2 回复

你好,有两种方案解决此问题

方案一 : 将属性改用 public修饰; 方案二: 使用单例模式 ,直接全局使用,参考如下demo

// src/main/ets/ClientTest.ets
class ClientTest{
  private name:string = ''
  private static instance: ClientTest | null = null
  private constructor() {
  }
  private testFun():string{
    return ''
  }
  public static getInstance(){
    if(!ClientTest.instance){
      ClientTest.instance = new ClientTest()
    }
    return ClientTest.instance
  }
  public setValue(c: string){
    this.name = c
  }
  public getValue(){
    return this.name
  }
}
let a: ClientTest = ClientTest.getInstance()
export default a
// src/main/ets/RemoteApi.ets
import ClientTest from './ClientTest'
export class RemoteApi{
  // client  = ClientTest
  a = ClientTest.setValue('xxxx')
  client = ClientTest
}

更多关于在TypeScript 和 JavaScript中,私有属性 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在TypeScript和JavaScript中,私有属性的实现方式有所不同,但都与鸿蒙OS(HarmonyOS)无关。TypeScript通过private关键字来定义私有属性,这些属性只能在类内部访问。JavaScript则通过#符号来声明私有字段,同样只能在类内部访问。这些语言特性是ECMAScript标准的一部分,与鸿蒙OS的架构或实现无直接关联。鸿蒙OS的开发者应关注其提供的API和开发框架,而不是这些语言层面的私有属性实现。

回到顶部