TypeScript中的属性封装

TypeScript中的属性封装


在学 Javaweb 时,mvc架构 其中 model层 中封装的都是 实体类,实体类中包括 getter、setter方法 等内容,这种代码风格使项目结构比较清晰。
TypeScript 中的属性封装类似于Javaweb中mvc架构中的 model层

传统JavaScript对象属性封装出现的问题:

  1. 属性是在对象中设置的,属性可以任意的被修改
  2. 属性可以任意被修改将会导致对象中的数据变得非常不安全

TS可以在属性前添加属性的修饰符

  1. public 修饰的属性可以在任意位置访问(修改)默认值
  2. private 私有属性,私有属性只能在类内部进行访问(修改),只能通过在类中添加方法使得私有属性可以被外部访问
  3. protected 受保护的属性,只能在当前类当前类的子类中使用
// 定义一个表示人的类
class Person {
	private _name: string;
	private _age: number;
	constructor(name: string, age: number) {
		this._name = name;
		this._age = age;
	}

	// getter方法用来读取属性
	// setter方法用来设置属性
	//	-它们被称为属性的存取器
	
	// 定义方法,用来获取name属性
	getName(){
		return this._name;
 	}
 	
	// 定义方法,用来设置name 属性
	setName(value: string) {
		this._name = value;
	}
	
	getAge() {
		return this._age;
	}
	
	setAge(value: number) {
		// 判断年龄是否合法
		if(value >= 0) {
			this._age = value;
		}
	}
	
}

TypeScript 支持这种封装实体类的编码方式,上方代码可以简化为以下方式:

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

	//TS中设置getter方法的方式
	get name() {
		// console.log( 'get name()执行了! !' );
		return this._name;
	}
	set name(value : string) {
		this._name = value;
	}
	get age() {
		return this._age;
	}
	set age(value : number) {
		if(value >= 0) {
			this._age = value
		}
	}
	
}

let per = new Person();
per.name ='猪八戒'; // 此时调用上面封装好的赋值方法
per.age = 33;
console.log(per);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
01Typescript介绍 、Typescript安装、Typescript开发工具(15分51秒).rar 02 Typescript 的数据类型 boolean 数字类型 number类型 string类型 array类型元组类型 (tuple)枚举类型 (enum) (上) (20分29秒).rar 03 Typescript的数据类型 任意类型 (any) null 和 undefined void类型 never类型 (下) (16分6秒).rar 04 Typescript的函数 函数的定义 可选参数 默认参数 剩余参数 函数重载 箭头函数 (31分50秒).rar 05 Typescript的类 Es5的类和静态方法 继承 (原型链继承、对象冒充继承、原型链+对象冒充组合继承) (20分40秒).rar 06 Typescript的类 类的定义 继承 类里面的修饰符 (上) (29分4秒).rar 07 Typescript的类 类的静态属性 静态方法 抽象类 多态 (下) (27分52秒).rar 08 Typescript的接口的用途 以及属性类型接口 (19分46秒).rar 09 Typescript属性类型接口【案例】 定义Ajax请求数据的接口 ts封装ajax (8分).rar 10 Typescript的函数类型口 【案例】 加密方法约束 (5分11秒).rar 11 Typescript的可索引接口 类类型接口 (12分2秒).rar 12 Typescript接口扩展、接口的继承 (7分19秒).rar 13 Typescript的泛型 泛型变量 泛型类 (22分54秒).rar 14 Typescript的泛型接口 泛型类接口 (8分42秒).rar 15 Typescript泛型类 - 把类作为参数类型的泛型类 (21分47秒).rar 16 Typescript 类型、接口、类 、泛型 综合使用--Typescript封装统一操作Mysql Mongodb Mssql的底层类库 (14分31秒).rar 17 Typescript 模块 以及模块化封装DB库 封装类似Mongoose风格的类库 (25分22秒).rar 18 命名空间 命名空间块化 (11分35秒).rar 19 装饰器定义 类装饰器 属性装饰器 装饰器工厂 (23分17秒).rar 20 装饰器 方法装饰器 方法参数装饰器 装饰器的执行顺序 (28分39秒

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值