介绍
一般,编程语言的类型系统分为以下两种:
- 名义类型系统,Nominal Type System
- 结构化类型系统,Structural Type System
区别
名义类型系统
如果说两个类型相等,那么两个类型的名字(identity)一定相同
如果一个类型是另一个类型的子类型,则必须显式声明。
采用名义类型系统的编程语言有 C++,Java和C#等
结构化类型系统
如果说两个类型相等,只要它们 有相同的结构定义即可(每个字段名字相同,且类型相等)。
如果A类型是B类型的子类型,只需要B类型包含所有A类型的字段结构即可。
采用结构化类型系统的编程语言有 TypeScript、Go语言
参考:
https://blog.csdn.net/jaytalent/article/details/105404774