首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将带有getter和带下划线的私有属性的Typescript类转换为Object

,可以通过以下步骤实现:

  1. 创建一个Typescript类,该类包含带有getter和带下划线的私有属性。例如:
代码语言:txt
复制
class MyClass {
  private _name: string;
  private _age: number;

  constructor(name: string, age: number) {
    this._name = name;
    this._age = age;
  }

  get name(): string {
    return this._name;
  }

  get age(): number {
    return this._age;
  }
}
  1. 在该类中添加一个方法,用于将类转换为Object。该方法可以使用Object.assign()函数将私有属性复制到一个新的Object对象中。例如:
代码语言:txt
复制
class MyClass {
  // ...

  toObject(): object {
    return Object.assign({}, this);
  }
}
  1. 使用该类创建一个实例,并调用toObject()方法将其转换为Object。例如:
代码语言:txt
复制
const myObj = new MyClass("John", 25);
const myObjAsObject = myObj.toObject();
console.log(myObjAsObject);

输出结果为:

代码语言:txt
复制
{ _name: 'John', _age: 25 }

这样,我们就成功将带有getter和带下划线的私有属性的Typescript类转换为Object。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pyhton之如何属性方法设置成私有类型

平常都没注意python是如何属性方法设置成私有的,今天看到了就记一下。 要想将属性方法设置成私有的,只需要在属性前面或者方法前面加上__(注意,是双下划线)。...printStudent(self): print("姓名是:",self.name) print("年龄是:",self.age) stu = Student("tom",12) #当printStudent...设置成私有的方法时 #再去在外访问该方法就会报错 stu.printStudent() 但是呢,在Python中是没有真正意义上私有属性方法,为什么这么说呢?...因为在给属性或方法命名时,实际上是对名称进行了一些特殊处理,使得外界无法访问。 我们可以使用以下方法来获取私有属性方法: stu...._Student__printStudent() 即实例化对象.单下划线+名+方法名。

1.6K20

iOS学习——属性引用self.xx与_xx区别

,我们就不得不提到iOS中 成员变量属性 之间区别联系了。   ...已经独揽了@synthesize功能主要有三个作用: 生成了成员变量get/set方法声明 生成了私有带下划线成员变量因此子类不可以直接访问,但是可以通过get/set方法访问。...)的话Xcode不会再自动生成带有划线私有成员变量了 因为xCode自动生成成员变量目的就是为了根据成员变量而生成get/set方法,但是如果getset方法缺一个的话都会生成带下划线变量...,根据我个人经验,最容易出问题地方就是对属性xx或成员变量_xx初始化地方调用时机,直接通过例子来看,我们属性实例变量初始化放在重写get方法中,于是我们在 - (void)viewDidLoad...,如果我们同时手动重写了一个属性getset方法的话,Xcode不会再自动生成带有划线私有成员变量了。

953160
  • python 单下划线双下划线

    _call_for() TypeError: 'NoneType' object is not callable 2、双下划线"__" 对于Python中属性,可以通过双下划线"__“来实现一定程度私有化...,属性名被改为了"_person__Id"(属性名前增加了单下划线名) print(dir(Bruce)) 可以看到Bruce中有_person__Id属性,相较原__Id属性,变得可调用 ['class..._person__Id) Bruce.infoma() 输出运行结果: 430 #通过使属性_Id名前增加了单下划线名person来实现属性可调用 1 双下划线另一个重要目地是,避免子类对父类同名属性冲突...,由于没有定义 _ init 函数,调用父 _ init_ _,但是由于双下划线"混淆"效果,"self....“_”:双下划线表示私有类型变量。只能是允许这个本身进行访问了,连子类也不可以,这类属性在运行时属性名会加上单下划线名。

    1.8K20

    OC知识--成员变量(属性,实例变量)相关知识

    如果内部成员变量,只允许外界读取,但是不允许修改,则通常只提供getter方法而不提供setter方法 成员变量名命名以下划线开头,settergetter方法名不需要带下划线 成员变量名使用下划线开头有两个好处...与getter方法方法名区分开来 可以一些其他局部变量区分开来,下划线开头变量,通常都是成员变量。...点语法本质 其实点语法本质就是调用了setter方法getter方法 当使用点语法时,编译器会在程序翻译成二进制时候.语法自动转换为settergetter方法 如果点语法在=号左边,那么编译器会自动转换为...@public 公开 在有对象前下,任何地方都可以直接访问 @protected 受保护 只能在当前子类对象方法中访问 @private 私有的 只能在当前对象方法中才能直接访问...中 由于getter/setter方法实现是要将传入形参给属性获取属性值,所以在@synthesize属性后面写上要将传入值赋值给谁要返回哪个属性值, 并用等号连接 3.

    2.5K60

    Objective-c 知识总结 -- @property

    这里直接证明了以下几点: Xcode 帮我们生成(把原来变量名改成)了,带下划线实例变量; 声明并生成了变量名对应存取方法; ** 让警告消失 ** ? ?...如果是 readonly 属性声明,只可以有读取方法(getter),所以你手动实现了它 getter 方法,其实 readwrite 情况下手动实现 setter getter 情况是一样一样...读写权限关键字解析 readonly,只读只生成相应 getter 方法,以及带下划线实例变量; @property ( readonly ) int age; readwrite,生成 setter...、getter 方法,以及带下划线实例变量; @property ( readwrite ) int age; -- a @property int age; -- b a、b 结果是一样,原因是...class_getProperty --> 获取某个属性声明 /** * 根据提供属性名返回属性 * * @param cls * @param name

    1.4K31

    对象、消息、运行期--10:runtime关联对象

    object身上一个键就对应一个关联对象,所以我们可以给object关联多个对象。类似字典,把关联到object值理解为字典中value,这些value通过key来存取。...(id object)函数移除是某个对象身上所有关联对象。...objc没有给我们提供移除object身上单个关联对象函数,所以,一般通过objc_setAssociatedObject函数传入nil来达到移除某个关联对象目的。...添加gettersetter 在category中使用 @property添加属性 ,不会生成带下划线成员变量,也不会有settergetter方法实现,所以我们通过runtime关联对象技术为已经存在添加...“属性”,这样我们只是实现了settergetter方法,依然不会有带下划线成员变量 #import "Phone.h" @interface Phone (Info) @property (nonatomic

    18710

    Python 中使用私有成员子类化

    __value但是,当我们想要子类化一个,并访问其私有成员时,却没有一种简单方法。通常,我们希望直接操作原始数据对象,而无需总是使用访问器修改器。...虽然这似乎违背了私有公有的基本思想,但通常情况下,我们要子类化是我们自己,我们很乐意将成员公之于子类,但不想让该类实例访问这些成员。那么,有没有一种干净方法来实现这种区别呢?...虽然私有属性在Python中并没有真正意义上私有属性,但是通常情况下,其他开发者会遵守约定,不会随意访问或修改带下划线前缀变量,以此来保护私有属性。...然后我们创建了一个子类 Child,它继承了 Parent 。在 Child 中,我们定义了一个方法 access_private_value(),它可以访问修改父私有属性 _value。...然后我们通过 property() 函数定义了一个属性 value,它可以访问修改这个私有属性值。

    9710

    4 分钟再快速过一遍 ES12 5 个要点~

    数字分隔符 数字分隔符是数字之间添加划线,这使得数字更可读;当代码解析时,下划线会被自动去除; 举栗 // 十进制数字,按照千位进行划分 let n1 = 1_000_000_000; console.log...私有方法/属性 Class 默认情况下方法属性都是公共,在 ES12 中可以用 # 加一个前缀符号创建私有的方法属性; // 创建 User class User { constructor...Getter Setter; // 创建 Str class Str { // 设置私有属性 #uniqueStr; constructor() {} //...= 20; // 调用公共 Getter,然后访问私有 Getter const uniqueStr = str.getRandomString; console.log(uniqueStr); //...每次在 Setter 之后执行 Getter打印一个随机字符串 ---- OK,以上便是本篇分享,周末愉快O(∩_∩)O,我是掘金安东尼,公众号同名,日拱一卒、日掘一金,再会~~

    31440

    Python私有属性私有方法

    但是Python中属性方法在外部默认是可以访问,而有些属性方法我们只允许在内部使用,不允许在外部使用。这种情况下,可以使用私有属性私有方法。 ?...100 非私有属性可以在外部访问修改,而私有属性只能通过包含set方法来修改。...make money 在父中定义普通属性普通方法,子类都继承了,子类可以直接使用,但是父私有属性私有方法子类无法直接使用,因为子类不会继承父私有属性私有方法。...如果想访问,可以通过间接方式访问。 ? 五、Python中划线说明 1.不带下划线变量方法,是普通变量方法,在作用域内都可以正常使用,如果是中定义属性,则对象可以在任何地方使用。...3.双前缀下划线“__”变量方法,在作用域内也可以正常使用,如果定义在中,则是私有属性私有方法,在外部不能直接访问,子类也不会继承,要访问只能通过间接方法。

    2.9K30

    【iOS】关联对象详解

    目前我能想到关联对象使用场景有如下几点: 运行时给cagetory添加gettersetter。...因为category中添加property不会生成带下划线"_"成员变量以及gettersetter实现。所以可以通过关联对象实现gettersetter。...有时需要在对象中存储一些额外信息,我们通常会从对象所属中继承一个子类。然后给这个子类添加额外属性,改用这个子类。...,category中虽然可以添加属性,但是并不会生成带下划线成员变量,也不会生成gettersetter实现(详情参考笔者《【iOS】Category VS Extension 原理详解》)。...我们可以通过关联对象这个技术为category中属性添加gettersetter,代码如下: // EOCPerson BaseInfo category #import "EOCPerson.h

    7.7K40

    Python 进阶指南(编程轻松进阶):十七、Python 风格 OOP:属性魔术方法

    属性 我们在第 15 章中使用BankAccount通过在名字开头加一个下划线把它_balance属性标记为私有。...但是请记住,一个属性指定为私有只是一种约定:Python 中所有属性从技术上来说都是公共,这意味着它们可以被代码访问。无法阻止代码有意或恶意地_balance属性更改为无效值。...但是你可以防止意外对这些带有属性私有属性无效更改。在 Python 中,属性是专门分配了获取器、设置器删除器方法属性,这些方法可以控制属性如何被读取、更改删除。...如果您认为,“我希望每次访问、用赋值语句修改或用del语句删除该属性时都能运行一些代码”,那么您希望使用属性特性转换为属性 首先,让我们创建一个简单,它有一个常规属性而不是属性。...使用 Python 属性最大好处是,当你第一次创建你时,你不必使用它们。您可以使用常规属性,如果以后需要属性,可以属性换为属性,而不破坏任何代码。

    64220

    使用 TypeScript 探索面向对象编程

    TypeScript对象: 在TypeScript 中,是创建对象蓝图。它定义了对象具有的属性行为。我们可以创建一个多个实例,这些实例称为对象。...在上面的示例中,我们定义了一个名为“Person”,它具有私有属性(nameage)、一个用于初始化这些属性构造函数以及一个用于greet()打印问候语公共方法。...* private: 私有成员只能在定义它们中访问。 * protected:受保护成员可以在定义它们及其子类中访问。 4. 继承多态: 继承允许从其他继承属性方法。...在上面的示例中,我们有一个带有受保护属性名称makeSound()方法“Animal”。“Dog”扩展了“Animal”并覆盖了makeSound()为狗提供特定声音方法。...我们使用 getter setter 分配检索名称属性。 结论: 面向对象编程是构建复杂且可维护应用程序强大范例,TypeScript 为 OOP 概念提供了强大支持。

    57130

    Python面向对象编程-魔术方法-__call____getattr__方法

    在Adder实例化过程中,我们数字5传递给了构造方法__init,从而初始化了Adder对象属性n。...同时,__call__方法也可以带有参数,从而支持多种不同调用方式。__getattr__方法__getattr__方法是用于实现对象属性访问魔术方法。...在DynamicObject实例化过程中,我们创建了一个名为_attrs字典,用于存储对象属性。...最后,我们使用点运算符访问DynamicObject对象属性,并使用__getattr__方法实现属性访问行为。需要注意是,在这个例子中,我们使用了下划线开头属性名称,以表示这些属性私有的。...这是因为在Python中,如果属性名称以一个或多个下划线开头,则表示该属性私有的,应该避免直接访问该属性。如果需要访问私有属性,可以使用访问器方法(如gettersetter方法)来实现。

    76782

    _TypeScript笔记4

    一.成员 TypeScript定义与ES6 Class规范一致,静态属性,实例属性,访问器等都支持: class Grid { static origin = {x: 0, y: 0}..._fullName = newName; } } 但需要注意2点: ES3不支持getter/setter,因此要求编译配置为ES5+ 只有getter没有setter属性会被自动推断为readonly...this.xxx访问私有成员) protected:与private类似,但在派生中也可以访问受保护成员 例如: class Animal { // 私有成员属性 private name...__proto__ || Object.getPrototypeOf(A)).apply(this, arguments) } TypeScriptClass继承也会被编译替换成基于原型继承,如下...,TypeScript编译产物更健壮,因为其目标是: 在任何支持 ES3+宿主环境中运行 P.S.比较有意思是静态属性继承,具体见一.如何继承静态属性

    72950

    全新 Javascript 装饰器实战上篇:用 MobX 方式打开 Vue

    如果是静态成员,target 是本身;如果是实例成员,target 为原型对象(prototype) 属性装饰器只会接收两个参数:属性名。...linux 管道 context 提供了必要上下文信息,对开发者来说更加便利,可以快速判断装饰器类型、是否为静态属性私有属性等等。...属性装饰器返回值是一个函数,这个实际上就是一个 initializer 访问不到原型 在 initializer 中也不能调用 defineProperty。...我们直接在 init 中将初始值转换为 ref, 相对应 getter/setter 也作简单改造。 很简单是不是?...我们建议在 addInitializer 中一次性需要属性都初始化完毕,避免在 getter 中动态去添加新属性,利好 JavaScript 引擎优化。

    50420

    python 继承与多重继承

    当构造对象时,基会被记住。 此信息将被用来解析属性引用:如果请求属性中找不到,搜索转往基中进行查找。 如果基本身也派生自其他某个,则此规则将被递归地应用。...方法引用按以下方式解析:搜索相应属性,如有必要将按基继承链逐步向下查找,如果产生了一个函数对象则方法引用就生效。 派生可能会重载其基方法。...例如,所有都是继承自 object,因此任何多重继承情况都提供了一条以上路径可以通向 object。...任何形式为 __spam 标识符(至少带有两个前缀下划线,至多一个后缀下划线文本将被替换为 _classname__spam,其中 classname 为去除了前缀下划线的当前名称。...例如,如果你有一个基于文件对象来格式化某些数据函数,你可以定义一个带有 read() readline() 方法从字符串缓存获取数据,并将其作为参数传入。 实例方法对象也具有属性: m.

    1.5K10

    Python学习手册之数据封装、方法、

    一个相关概念是隐藏数据,它隐藏了实现细节,并提供一个干净标准接口。 在其它编程语言中,通常是通过私有方法属性完成,这些方法属性阻止了对中某些方法属性外部访问。...但是,还是有一些方法可以阻止人们访问内部私有成员。 弱私有方法属性在开头只有一个下划线。 这表明它们是私有的,不应该被外部代码使用。但是,它们基本上只有一个约定,并不阻止外部代码访问它们。...弱私有方法属性名称开头有双下划线,这意味着它们不能从之外被访问。 这样做目的并不是确保它们是私有的,而是如果又具有相同名称方法属性子类,则可以避免出现 bug。...属性函数 属性函数提供一种定制化访问属性方法 有些时候我们不想让外界修改属性值,那么通过属性装饰器 @property 放在方法上方创建属性函数。...setter 函数定义设置属性值。getter 函数定义获取属性值。

    66130

    如何用 Typescript 写一个完整 Vue 应用程序

    但是我们仍然需要一些带有自定义装饰器功能第三方包来创建一个真正、完整 Typescript 应用程序,而官方文档并不包含入门所需要所有信息。...我们通过这个教程,我们会回顾以下功能,并展示如何使用 Typescript 去实现 1.基于组件 2.Data, props, computed 属性, methods, watchers, and...中,我们可以写一些复杂包括 getter setter 计算属性,如下所示 export default class HelloWorld extends Vue { get fullName...这个库提供装饰器来绑定 Vue 组件中 State, Getter, Mutation Action。...因为我们使用带有命名空间Vuex 模块,所以我们首先从 Vuex 导入命名空间,然后传递模块名称来访问该模块。

    2.2K10
    领券