typeScript__属性修饰符,属性封装,泛型

1,153 阅读2分钟

属性封装

在类定义的过程中,为了保证特殊数据的安全性通常会使用private,protected这两类修饰符对属性进行保护,从而也有属性的封装确保在子类型访问或修改private类型的属性值。

属性的修饰符

修饰符作用
private(私有属性)属性只能在类内部进行修改/访问
public(公共属性(默认值))属性只能在类内部进行修改/访问
protected(受保护类型属性)属性只能在当前类和当前类的子类中访问

tips: public类型属性 此文不作赘述

private 属性类型 Eg
  • private关闭了该属性的外部访问方式
    class person {
        // ts中在属性前添加修饰符
         name:string;
        private age:number;
        constructor(name:string,age:number){
            this.name=name;
            this.age=age
        }
    }
    
    const person1=new person('liy',21)
    console.log(per.age)//error 属性“age”为私有属性,只能在类“person”中访问
    per.age=18  // error 属性“age”为私有属性,只能在类“person”中访问
    **private关闭了该属性的外部访问方式**
  • 使用属性封装 (通过setter方法修改属性 ,getter属性存储器)使用set getter保证属性更安全
   class person {
        // ts中在属性前添加修饰符
         name:string;
        private age:number;
        constructor(name:string,age:number){
            this.name=name;
            this.age=age
        }
          // 定义一个方法获取age
        getAge(){
         return this.age
        }
        //定义set方法
        setAge(val:number){
            //   判断age是否合理 避免数据变得不安全
            val>=0? this.age=val:''
        
        }
    }
protected 属性类型 Eg

protected受保护的属性只能在当前类和当前类的子类中访问

// protected受保护的属性只能在当前类和当前类的子类中访问
class A{
constructor(public name:string,protected number:number){}
}
class B extends A{
    test(){
        console.log(this.number)
    }
}

泛型

泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。通常在定义函数或类时,遇到类型不明确的情况下使用

// k表示一个类型
// 只在函数执行时确定 ts使用类型推断
  function fn1<K>(a:K):K{
return a
  }
//   指定泛型类型
  let result = fn1<string>('hello');
  //类型推断泛型类型
  let result1 = fn1(10); 
  • 可同时定义多个泛型 // 可同时制定多个 function fn3<t,k>(a:t,b:k):t{ return a }
  • 可指定泛型类属于固定的几种类型
interface face{
  length:'number'

}
function fn4< T extends face>(a:T):T{
  return a
}