Typescript中interface与type的相同点与不同点是什么


今天主机评测网小编给大家分享一下Typescript中interface与type的相同点与不同点是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

interface VS type

大家使用 typescript 总会使用到 interface 和 type,官方规范 稍微说了下两者的区别

  • An interface can be named in an extends or implements clause, but a type alias for an object type literal cannot.

  • An interface can have multiple merged declarations, but a type alias for an object type literal cannot.

相同点

都可以描述一个对象或者函数

interface

interfaceUser{name:stringage:number}interfaceSetUser{(name:string,age:number):void;}

type

typeUser={name:stringage:number};typeSetUser=(name:string,age:number)=>void;

都允许拓展(extends)

interface 和 type 都可以拓展,并且两者并不是相互独立的,也就是说 interface 可以 extends type, type 也可以 extends interface 。 虽然效果差不多,但是两者语法不同

interface extends interface

interfaceName{name:string;}interfaceUserextendsName{age:number;}

type extends type

typeName={name:string;}typeUser=Name&{age:number};

interface extends type

typeName={name:string;}interfaceUserextendsName{age:number;}

type extends interface

interfaceName{name:string;}typeUser=Name&{age:number;}

不同点

type 可以而 interface 不行

  • type 可以声明基本类型别名,联合类型,元组等类型

//基本类型别名typeName=string//联合类型interfaceDog{wong();}interfaceCat{miao();}typePet=Dog|Cat//具体定义数组每个位置的类型typePetList=[Dog,Pet]
  • type 语句中还可以使用 typeof 获取实例的 类型进行赋值

//当你想获取一个变量的类型时,使用typeofletdiv=document.createElement('div');typeB=typeofdiv
  • 其他骚操作

typeStringOrNumber=string|number;typeText=string|{text:string};typeNameLookup=Dictionary<string,Person>;typeCallback<T>=(data:T)=>void;typePair<T>=[T,T];typeCoordinates=Pair<number>;typeTree<T>=T|{left:Tree<T>,right:Tree<T>};

interface 可以而 type 不行

interface 能够声明合并

interfaceUser{name:stringage:number}interfaceUser{sex:string}/*User接口为{name:stringage:numbersex:string}*/

以上就是“Typescript中interface与type的相同点与不同点是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注主机评测网行业资讯频道。


上一篇:go语言需不需要分号

下一篇:Golang怎么实现组合模式和装饰模式


Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索