理解 TypeScript 背后的结构化类型系统

前言

你能说清楚类型类型系统类型检查这三个的区别吗?在理解TypeScript的结构化类型系统之前,我们首先要搞清楚这三个概念和它们之间的关系

  • 类型:即对变量的访问限制赋值限制。如 TypeScript 中的原始类型、对象类型、函数类型和字面量类型等类型,当一个变量类型确定后,你不能访问这个类型中不存在的属性或方法,也不能将其他不兼容的类型的变量赋值给该变量
  • 类型系统:本质上是一组规则,其描述如何为变量、函数等结构分配和实施类型。同时还定义了如何判断类型之间的兼容性,也正是我们今天主要讨论的概念
  • 类型检查:是一种能力,一种确保类型遵循类型系统下的类型兼容性的能力

理解它们对理解我们今天要讨论的TypeScript的结构化类型系统很有帮助

类型系统分为结构化类型系统标称类型系统,首先我们来看看它们分别都是什么

什么是结构化类型系统?

基于类型结构进行类型兼容性判断

关键体现在两个类型的比较当中,当两个类型比较时,如果是按照属性和方法是否相同来比较的话就称为结构化类型系统,也叫鸭子类型。

比如下面这个例子:

class Dog {say() {console.log('wang wang wang!')}
}

class Cat {say() {console.log('miao miao miao!')}
}

const invokeSay = (dog: Dog) => {dog.say()
}

const dog = new Dog()
const cat = new Cat()

invokeSay(dog) // wang wang wang!
invokeSay(cat) // miao miao miao! 

虽然invokeSay函数接收的参数类型是Dog,但是由于Cat

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值