TS中type和interface的区别解析
作者:矮袋鼠和猫
对于type来说,更多的是对类型的一种复用,比如在项目中需要用到一些比较复杂的或者书写起来很长的类型,而对于 interface来说,它是正儿八经的用来定义接口类型(约束数类型和属性)的,且接口类型是支持继承和声明合并的,感兴趣的朋友跟随小编一起看看吧
在 TS 中,type 和 interface相似,都可以给类型命名并通过该名字来引用表示的类型。不过它们之间是存在一些差别的,我们在使用时也需要注意一些特殊场景。
概念:
type:类型别名,为类型创建一个新名称。它并不是一个类型,只是一个别名。
type
关键字是声明类型别名的关键字。它的语法如下:
type AliasName = Type;
- type:声明类型别名的关键字
- AliasName:类型别名的名称
- Type:类型别名关联的具体类型
interface:接口,TS 设计出来主要用于定义对象类型,可以对对象的形状进行描述。
通过关键字 interface
可以定义一个接口类型。它能合并众多类型声明至一个类型声明。
接口声明只存在于编译阶段,在编译后生成的 JS 代码中不包含任何接口代码。
语法如下:
interface InterfaceName { TypeMember; TypeMember; ... }
- interface:定义接口的关键字
- InterfaceName:接口名,首字母需要大写
- TypeMember:接口的类型成员
区别:
1.interface可以重复声明,type定义后不能重复声明
2.interface可以通过“extends”来继承接口,这样既高效又不用重新定义。而type只能通过&来实现类似于继承的功能
3.
type 能够表示非对象类型, 而 interface
则只能表示对象类型。
type
- 可以定义基本类型别名,如type StringType = string
- 可以声明联合类型,如 type paramType = number | string;
- 可以声明元组类型,如type arrType = [string, string, number]
定义对象时严谨的来说,type 是引用,而 interface
是定义。
到此这篇关于TS中type和interface的区别的文章就介绍到这了,更多相关TS type和interface区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!