TypeScript 类型系统与面向对象编程入门
1. 基本与自定义类型
1.1 结构类型系统与名义类型系统
在类型判断方面,不同语言采用不同的类型系统。像 Java 采用名义类型系统,在该系统中,若两个类型在相同命名空间下有相同名称,才被认为是相同类型。例如以下 Java 代码:
class Person {
String name;
}
class Customer {
String name;
}
Customer cust = new Person(); // 编译错误
此代码无法编译,因为类名不同,即便结构相同。
而 TypeScript 采用结构类型系统,若两个不同类型包含相同成员,则认为它们兼容。以下是对应的 TypeScript 代码:
class Person {
name: string;
}
class Customer {
name: string;
}
const cust: Customer = new Person(); // 无错误
该代码不会报错,因为 Person 和 Customer 类结构相同,可将一个类的实例赋值给另一个类的变量。
1.2 自定义类型声明关键字选择
自定义类型可使用 type 、 interface 或 class
超级会员免费看
订阅专栏 解锁全文
82

被折叠的 条评论
为什么被折叠?



