• 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关键字声明。

    • 接口中声明的属性和方法必须在类中实现。
    • 类可以定义接口中不存在的方法和属性。
    • 接口不能定义类的私有属性,不能定义类的构造函数。
    • 接口可以相互继承,也可以继承类,接口在继承类的时候会同时继承类的私有属性和受保护属性。
  • 相关阅读:
    关于工作中Git相关的总结
    浅谈MySQL的优化
    由内搜推送思考Kafka 的原理
    SOA和微服务架构
    Centos7.2 搭建Lamp服务器以及迁移WordPress个人博客详细过程
    MyISAM和InnoDB索引实现区别
    图解高内聚与低耦合
    图解Java常用数据结构(一)
    Java源码安全审查
    Java高并发之锁优化
  • 原文地址:https://www.cnblogs.com/linxue/p/14328047.html
Copyright © 2020-2023  润新知