TypeScript语法探究五

接口的声明

在前面我们通过type可以用来声明一个对象类型:

 对象的另外一种声明方式就是通过接口来声明:

  他们在使用上的区别,我们后续再来说明。

接下来我们继续学习一下接口的其他特性。

可选属性

接口中我们也可以定义可选属性:

只读属性

接口中也可以定义只读属性:

 这样就意味着我们再初始化之后,这个值是不可以被修改的;

索引类型

前面我们使用interface来定义对象类型,这个时候其中的属性名、类型、方法都是确定的,但是有时候我们会遇 到类似下面的对象:

 

函数类型

前面我们都是通过interface来定义对象中普通的属性和方法的,实际上它也可以用来定义函数类型:

 当然,除非特别的情况,还是推荐大家使用类型别名来定义函数:

 

交叉类型

前面我们学习了联合类型:

联合类型表示多个类型中一个即可

  还有另外一种类型合并,就是交叉类型(Intersection Types):

交叉类似表示需要满足多个类型的条件;

交叉类型使用 & 符号;

我们来看下面的交叉类型:

表达的含义是number和string要同时满足;

但是有同时满足是一个number又是一个string的值吗?其实是没有的,所以MyType其实是一个never类型;

交叉类型的应用

在开发中,我们进行交叉时,通常是对对象类型进行交叉的:

interface和type区别

我们会发现interface和type都可以用来定义对象类型,那么在开发中定义对象类型时,到底选择哪一个呢?

如果是定义非对象类型通常推荐使用type,比如Direction、Alignment、一些Function;

如果是定义对象类型,那么他们是有区别的

interface 可以重复的对某个接口来定义属性和方法;

 而type定义的是别名,别名是不能重复的;

字面量赋值

我们来看下面的代码:

 这是因为TypeScript在字面量直接赋值的过程中,为了进行类型推导会进行严格的类型限制。

但是之后如果我们是将一个 变量标识符 赋值给其他的变量时,会进行freshness擦除操作。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值