首页 > 其他分享 >TypeScript属性的封装

TypeScript属性的封装

时间:2022-11-27 14:34:42浏览次数:47  
标签:TypeScript 封装 name age number value ._ 属性

封装

  • 对象实质上就是属性和方法的容器,它的主要作用就是存储属性和方法,这就是所谓的封装

  • 默认情况下,对象的属性是可以任意的修改的,为了确保数据的安全性,在TS中可以对属性的权限进行设置

  • 只读属性(readonly):

    • 如果在声明属性时添加一个readonly,则属性便成了只读属性无法修改
  • TS中属性具有三种修饰符:

    • public(默认值),可以在类、子类和对象中修改
    • protected ,可以在类、子类中修改
    • private ,可以在类中修改
  • 示例:

(function (){
    // 定义一个表示人的类
    class Person{
        // TS可以在属性前添加属性的修饰符
        /*
        *   public 修饰的属性可以在任意位置访问(修改) 默认值
        *   private 私有属性,私有属性只能在类内部进行访问(修改)
        *       - 通过在类中添加方法使得私有属性可以被外部访问
        *   protected 受包含的属性,只能在当前类和当前类的子类中访问(修改)
        *
        * */
        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;
        //     }
        // }

        // TS中设置getter方法的方式
        get name(){
            // console.log('get name()执行了!!');
            return this._name;
        }

       private set name(value){
            this._name = value;
        }

        get age(){
            return this._age;
        }

        set age(value){
            if(value >= 0){
                this._age = value
            }
        }
    }

    const per = new Person('孙悟空', 18);

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

    // per.setName('猪八戒');
    // per.setAge(-33);

    per.name = '猪八戒';// 报错,因为setter设置了私有
    per.age = -33;

    // console.log(per);


    class A{
        protected num: number;

        constructor(num: number) {
            this.num = num;
        }
    }

    class B extends A{

        test(){
            console.log(this.num);
        }

    }

    const b = new B(123);
    // b.num = 33;


   /* class C{

        name: string;
        age: number

        // 可以直接将属性定义在构造函数中
        constructor(name: string, age: number) {
            this.name = name;
             this.age = age;
        }

    }*/

    class C{

        // 可以直接将属性定义在构造函数中
        constructor(public name: string, public age: number) {
        }

    }

    const c = new C('xxx', 111);

    console.log(c);

})();

 

标签:TypeScript,封装,name,age,number,value,._,属性
From: https://www.cnblogs.com/anjingdian/p/16929597.html

相关文章

  • C#特性属性验证
    记得以前的if(model.Validate()){...}1.abstract继承类publicabstractclassValidateAttribute:Attribute{publicabstractboolValidate(objectage);}2.......
  • TypeScript接口
    接口(Interface)接口的作用类似于抽象类,不同点在于接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。接口主要负责定义一个类的结构,接口可以去......
  • 安卓中 选择器属性的使用,注意事项
       处理android:state_activity同一个界面出现需要同时选择两个焦点的时候,用到我们在定义一个drawable的时候可以通过xml定义的drawable对象。它使得一个图片能在不同......
  • WebClient.Credentials 属性 (System.Net)
    ​​WebClient.Credentials​​Credentials属性.NETFramework类库WebClient..::.Credentials异步下载并不会比同步下载快.它的好处是不阻塞线程,这样的你界面或其他......
  • TypeScript抽象类
    抽象类(abstractclass)抽象类是专门用来被其他类所继承的类,它只能被其他类所继承不能用来创建实例使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义......
  • 05-面向对象_封装
    typora-root-url:images一、编程思想1.1、什么是思想​ 何谓编程思想?首先解释一下“思想”。​ 先问你个问题:你想做个怎样的人?​ 可能你会回答:我想做个好人,孝敬......
  • TypeScript之super
     示例ts文件:(function(){classAnimal{name:string;constructor(name:string){this.name=name;}sa......
  • TypeScript继承
    继承  * -使用继承后,子类将会拥有父类所有的方法和属性  * -通过继承可以将多个类中共有的代码写在一个父类中,  *   这样只需要写一次即可......
  • TypeScript 高级类型
    TypeScript高级类型class类类型兼容性交叉类型泛型和keyof索引签名类型和索引查询类型映射类型class类classPerson{  age:number//......
  • TypeScript之构造函数和this
     示例:classDog{name:string;age:number;//constructor被称为构造函数//构造函数会在对象创建时调用constructor(name:string,age:......