编程语言的类型系统:名义(Nominal)类型系统和结构化(Structural)类型系统

介绍

一般,编程语言的类型系统分为以下两种:

  • 名义类型系统,Nominal Type System
  • 结构化类型系统,Structural Type System

区别

名义类型系统

如果说两个类型相等,那么两个类型的名字(identity)一定相同

如果一个类型是另一个类型的子类型,则必须显式声明。

采用名义类型系统的编程语言有 C++,Java和C#等

结构化类型系统

如果说两个类型相等,只要它们 有相同的结构定义即可(每个字段名字相同,且类型相等)。

如果A类型是B类型的子类型,只需要B类型包含所有A类型的字段结构即可。

采用结构化类型系统的编程语言有 TypeScript、Go语言

参考:
https://blog.csdn.net/jaytalent/article/details/105404774


原文出处:https://malaoshi.top/show_1IX5MdMdJIqh.html