Typescript学习备忘录

数据类型

string, number, boolean, null, undefined, array, obeject, function,
TS新增数据类型:元组,枚举,any,never,void,高级类型

枚举

枚举可以定义一些带名字的常量,包括数字类型枚举和字符串类型的枚举。

接口

接口的作用就是为类型命名和为你的代码或第三方代码定义契约。

类型断言

类型断言可以用来手动指定一个值的类型。

函数

定义函数有四种方式:

// 方式一:函数
function fun1(a: number, b: number): number{
    return a + b;
}
// 方式二:字面量
let fun2: (a: number, b: number) => number
// 方式三:别名
type fun3 = (a: number, b: number) => number
// 方式四: 接口
interface fun4{
    (a: number, b: number) : number
}

可选参数定义:(a?: number, b: number): number
默认参数定义:(a?: number, b=0): number ,默认参数如果定义在必传参数前面,就必须传值,放在必传参数后面则可以不用。
剩余参数定义:

function fun5(a:number, ...rest: number[]){
    return a + rest.reduce((prev, next)=>prev+next)
}
console.log(fun5(1,2,3,4,5));

类的实现

“类的成员属性”都是实例属性,而不是原型属性,“类的成员方法”都是“原型”方法。
在TS中,类的属性必须有初始值或被初始化。

class People{
    constructor(name: string){
        this.name = name
    }
    name: string
    say(){

    }
}

类的继承

class Women extends People{
    constructor(name: string, sex: string) {
        super(name)
        this.sex = sex
    }
    sex: string
}

类的修饰符

public: 公有成员,默认值。
private: 私有成员,只能被类的原型中访问,不可以被实例访问,也不可以被子类访问。如果把构造函数设置为 private,则类不可以被实例化,也不能被继承。
protected:受保护成员,只能在类和子类中访问,不能被实例访问。如果把构造函数设置为 protected,则类只能被继承,不可以被实例化,相当于基类。
readonly: 只读属性,不可以被修改,必须初始化。
static:只读属性,只能用类名访问,不能用实例访问。

抽象类和多态

抽象类定义 abstract,抽象类只能被继承,不能被实例化。类的内部的抽象方法,只能被子类实现。

// 抽象类
abstract class People{
    constructor(){
        
    }
    say(){
        console.log('people say');
    }

    // 抽象方法
    abstract say(): void
}

class Women extends People{
    constructor() {
        super()
    }

    say(){
        console.log('woman likes man');
        
    }
}

class Man extends People{
    constructor() {
        super()
    }

    say(){
        console.log('man likes woman');
        
    }
}

let women = new Women()
let man = new Man()
let peoples: People[] = [women, man]
peoples.forEach(i=>{
    i.sleep()
})

this与链式调用

类的方法定义返回 this,可以实现方法的链式调用。

class Workflow{
    constructor(){

    }

    step1(){
        return this
    }

    step2(){
        return this
    }
}
new Workflow().step1().step2()

类与接口

可以用接口来定义类,类用implements关键字声明。

  • 接口中声明的属性和方法必须在类中实现。
  • 类可以定义接口中不存在的方法和属性。
  • 接口不能定义类的私有属性,不能定义类的构造函数。
  • 接口可以相互继承,也可以继承类,接口在继承类的时候会同时继承类的私有属性和受保护属性。
原文地址:https://www.cnblogs.com/linxue/p/14328047.html