TypeScript

🌸 您好,欢迎您的阅读,等君久矣,愿与君畅谈.
🔭 § 始于颜值 § 陷于才华 § 忠于人品 §
📫 希望我们可以进一步交流,共同学习,共同探索未知的技术世界 稀土掘金 OR GitHub.


# 10. 属性的封装
  1. 修饰符

    1. public : 修饰的属性可以在任意位置访问及修改,默认值
    2. private : 私有属性,只能在类内部进行访问及修改,通过类中添加方法使得私有属性可以被外部访问
    3. protected : 只能在当前类和当前类的子类中访问及修改
  2. 封装属性提升安全性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    class Personn {
    private name:string;
    private age:number
    constructor(name:string,age:number) {
    this.name = name;
    this.age = age;
    }
    /*
    getter方法用来读取属性,
    setter方法用来设置属性,这两个方法被称为属性的存取器。
    */
    get name_easy() {
    return this.name;
    }

    set name_easy(value: string) {
    this.name= value;
    }
    get age_easy(){
    return this.age;
    }
    set age_easy(value:number){
    this.age = value;
    }
    /* // 定义方法,用来获取name属性
    getterName(){
    return this.name;
    }
    // 定义方法,用来设置name属性
    setterName(value:string){
    this.name = value;
    }
    // 定义方法,用来获取age性
    getterAge(){
    return this.age;
    }
    // 定义方法,用来设置age属性
    setterAge(value:number){
    // 用来判断数据是否合法
    if (value>=0) {
    this.age = value;
    }
    } */
    }
    // 简洁版,直接将属性定义在构造函数中
    class A{
    constructor(public name:string,public age:number){
    }
    }
    const personn = new Personn('李四',20);
    /* personn.setterName('王二');// 修改name的值
    personn.setterAge(-12);// 修改age的值 */
    personn.name_easy = 'test';
    personn.age_easy = 23;
    console.log(personn.name_easy);
    console.log(personn.age_easy);
    console.log(personn);
# 11. 泛型
  1. 泛型的使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    // 在定义函数和类时,遇到类型不明确就可以使用泛型
    function fn<T>(a:T):T{
    return a;
    }
    // 1.不指定泛型,直接使用,利用TS的自动类型检测
    fn(12);
    // 2. 指定泛型
    fn<string>("hello");
    // 泛型可以同时指定多个
    function fn2<T,K>(a:T,b:K):T {
    console.log(b);
    return a;
    }
    fn2<number,string>(12,'test');
    //函数可以使用泛型
    // T extends Inter 表示泛型T必须是Inter实现类(子类)。
    interface Inter{
    demo:number
    }
    function fn3<T extends Inter>(a:T):number {
    return a.demo;
    }
    // 类中也可以使用泛型
    class myClass<T> {
    name:T;
    constructor(name:T) {
    this.name = name
    }
    }
    const mc = new myClass<string>('张三');

TypeScript
http://example.com/2020/09/01/9003_TypeScript/
作者
XGG
发布于
2020年9月1日
更新于
2023年6月3日
许可协议