Ts--中的其他

文章介绍了TypeScript中的类、构造函数、继承、抽象类、泛型和接口等核心概念。类是对象的模板,支持属性和方法,以及开放/闭合原则。构造函数用于初始化对象,this指针指向实例。继承允许子类继承父类的属性和方法,super用于调用父类构造函数。抽象类不能实例化,用于定义规范。泛型提供类型的一般性,接口则定义了一组规范,用于约束参数类型和方法。
摘要由CSDN通过智能技术生成

1.类 就是对象中属性和方法(opc原则 : (Open Closed Principle) 开/闭原则)

用class 声明 首字母大写的函数 然后new 他的实例

extendes继承  语法:class A extendes B { } ;

类属性或者静态属性 通过类创建 关键字static(首位)

其他一些关键字:

readonly(只读属性) 

public(公共:默认) : 修饰属性可任意访问

private(私有) : 只能内部访问,关闭了访问方式

protected(受保护的类) : 只能在当前类和当前类的子类访问

class Names {
   // name: string = '孙悟空'
   // readonly age: number = 18
    name: '孙悟空'
    age: 50
    static sayHello() {
        console.log('大家好');
    }
}
实例属性
const p = new Names()
console.log(p);

2.构造函数和this

constructor(){ } 声明的就是构造函数,通过this添加新属性.

new出来的实例对象中的this指向实例本身 ! ! !

3.继承

例如有一个animal动物类,new出来的实例有猫、狗、蛇等

子类会继承父类所有的方法和属性,如果有自己的方法,要在新类中去扩展,子类添加和父类相同的方法会被覆盖掉(称为方法的重写).

4.super

super()代表的是当前类的父类!

如果子类中写了构造函数,在子类构造函数中对父类的构造函数直接调用,会出错!

需要添加关键字 super() , 代表调用 . constructor中调用

constructor(){

    super()

}

5.抽象类 

无法被实例的类,称为抽象类.禁止去new 类,容易乱套

如果想使用抽象类中的属性或者方法,要使用关键字 abstract ,而添加了abstract的抽象方法,必须强制被继承,否则会出错!

6.属性封装

属性在对象中设置,是可以被随意修改的,因此会导致对象中的数据非常不安全!

ts语法支持在属性前加修饰符.

public : 公共(默认)    private : 私有 (只能内部访问)  protected : 受保护的类(父和子中访问) 

private 通过类当中添加方法使私有属性可以被外部访问

get读取属性 set设置属性可改写

(function () {
    class Person {
        private _name: string;
        private _age: number;
        constructor(name: string, age: number) {
            this._name = name;
            this._age = age
        }
        get name() {
            console.log('get name()执行了');
            return this._name
        }
        set name(value) {
            this._name = value
        }
    }
    const per = new Person('孙悟空', 18)
    per.name = '猪八戒'
    console.log(per.name);
})()

protected例子

  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);

6.泛型

属性的类型广泛性, 直接调用具有泛型的函数

直接出值,ts会自己推断设置泛型的值类型

或者可自己指定泛型的值

function fn<T>(a: T): T {
    return a
}
let re = fn(20)  //ts自己推断
let res = fn<number>(10)   //指定泛型

7.接口 ( 核心基础 )

需要有面向对象的思维 反正有点难 我没理解太懂

使用interface关键字 , 接口定义一个规范标准 , 可以合并多个类的属性方法类似于 (水管之间的接口) 必须满足父类要求需要使用使用interface;

我们在写函数中会检查传入参数的类型,是否存在并匹配 . 就相当于一个约束,对参数个数类型要求好后 , 扩展的实例中都需要遵循他的原则,否则就不会被 " 连接 "进去,会报错

当子类遵循了父类的要求,就会被继承,随之而来的也就带着约束一起继承过来 , 但具体的值并不继承.就这样一层一层下去.

我的理解来说 : 就类似于水管子的接口 , 开始的水管子定义好了往后的接口的长短和大小,往下连接的必须使用开始的水管定义好的规格去向下相接才会连接...

(以上个人理解,如果不正确欢迎提出来哈,狗头保命嘻嘻~)

语法糖:

构造其中直接写值 相当于类中定义属性,构造器中this改变其指向

constructor中并且可直接定义属性类型和对属性的设置

class C {
        constructor(protected name: string, protected age: number) {
        }
    }
    const c = new C('xx', 16);
    console.log(c);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值