TypeScript类型系统

类型系统是TS最主要的功能,即给JS添加静态类型检查,要想实现类型检查,首先就要有类型系统。TS可以帮助我们提供代码的扩展性和可维护性。

对于两者类型的理解

JavaScript 中的类型其实是值的类型。TypeScript 中的类型其实是变量的类型。

对于JS而言,一个变量可以是任意类型,而对于TS来说一个变量只能接受和它兼容的类型的值。

类型空间和值空间

TypeScript 既会对变量存在与否进行检查,也会对变量类型进行兼容检查。因此 TypeScript 就需要定义一系列的类型,以及类型之间的兼容关系。

在TS中,类型和值居住不同的,甚至不知道彼此的存在,类型不能当做值来用,反之亦然。

类型空间

const aa:user = {name:"LL",age:"20"}

上面的代码会报类型找不到的错,而以下用interface声明一下User就行了

interface User{
	name:string,
	age: string;
}
const aa: User = {name:'LL',age:"20"}

也就是说使用interface可以在类型空间声明 一个类型,这个是TS的类型检查的基础之一。

实际上类型空间内部也会有子空间,我们可以用namespace和module来创建新的子空间。子空间之间不能直接接触,需要依赖导入 导出来交互。

值空间

const a = window.LL();

Typescript 会报告一个类似Property ‘LL’ does not exist on type ‘Window & typeof globalThis’. 的错误。也就是说找不到成员变量

declare var LL:() =>any

这样又好了,也就是说使用declare可以在值空间声明 一个变量,这个是TS的变量检查的基础;

类型是怎么做到静态检查的

TS解决JS动态语言类型太宽松的问题,需要 :

  1. 提供给变量设定类型的能力: 通过类型注解的语法来完成
  2. 提供常用类型并可以扩展出自定义类型:TS提供了注入lib.d.ts等类型库文件
  3. 根据第一步给变量设定的类型进行类型检查,即不允许类型不兼容的赋值,也不允许使用值空间和类型空间不存在的变量和类型: Typescript 主要是通过 interface,type,函数类型等打通「类型空间」,通过 declare 等打通「值空间」,并结合 binder 来进行类型诊断。
类型系统的主要功能
  1. 定义类型以及其上的属性和方法
  2. 提供自定义类型的能力
  3. 类型兼容体系
  4. 类型推导

参考文章:https://mp.weixin.qq.com/s/rmiJIO8Apo0CkX-aC_Uzew

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值