【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)!