自学内容网 自学内容网

【TypeScript】抽象类 interface type的异同

#抽象类 interface type相似点很多,容易混淆使用#

抽象类(abstract)

定义类的格式,既可以包含抽象方法,也可以包含具体方法

一个类只能继承(extends)一个抽象类

abstract class Person {
    constructor(public name: string) {}
    abstract speak(): void
}

class Chlid extends Person {
    constructor(
        name: string
        public age: number
    ) {
        super(name)
    }
    speak(): void {
        console.log('咿呀')
    }
}

interface

只能描述结构,不能有具体实现

一个类可以实现(implements)多个接口

更专注定义对象和类的结构,支持继承、合并

interface Person {
    name: string
    age: number
}

interface Person { // 合并
    speak: () => void
}

interface Student extends Person { // 继承
    study: () => void
}

type

定义类型别名、联合类型(|)、交叉类型(&)

type Person {
    name: string
    age: number
} & {
    speak: () => void
}

type Student = Person & {
    study: () => void
}

interface和type都可以定义对象结构,大多场景可互换


原文地址:https://blog.csdn.net/weixin_45718102/article/details/142731930

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!