前言:
今天要讲的内容还是ts相关,在ts中最常见的声明合并:接口合并
在聊接口合并之前,我们先来聊聊声明合并
声明合并:
什么是声明合并?
其实很好理解,ts中的声明合并,指的就是编译器会针对同名的声明合并为一个声明
合并的结果:
合并后的声明会同时拥有原先两个或多个声明的特性
疑问:
那这两个或多个具体指的是什么呢?
其实得分几种区位优势包括哪些情况讲,今天要讲的就是其中一种,最简单也最常见的声明合并类型是接口合并
我们刚刚说了,“合并后的声明会同时拥有原先两个或多个声明的特性”
接口的合并也是一样,它会将双方的成员放到一个同名的接口里
需要注意的是,接口里面的成员有函数成员和非函数成员,情况有所不一样
例如:
interface box { height: number;}interface box { width: number;}let box: box = {height: 2, width: 3};
上述代码中,定义了两个名字都为box
的同名接口(实际开发中,可能来源于不同的文件),最终里面的东西会混合在一起
但是需要注意,以上情况里头的成员都是唯一的,但如果两个接口中同时声明了同名的非函数成员且它们的类型不同,则编译器会报错
而对于里头的函数成员来说,每个同名函数声明都会被当成这个函数的一个重载。而且当接口 a与后来的接口 a合并时,后面的接口具有更高的优先级
例如官方的例子:
interface cloner { clone(animal: animal): animal;}interface cloner { clone(animal: s小炮天赋heep): sheep;}interface cloner { clone(animal: dog): dog; clone(animal: cat): cat;}
最终会合并成一个声明,如下:
int绩溪龙川erface 十万以下的车cloner { clone(animal: dog): dog; clone(animal: cat): cat; clone(animal: sheep): sheep; clone(animal: animal): animal;}
需要注意两点:
每组接口里的声明顺序不变各组接口之间的顺序是后来的接口重载出现在靠前位置不过也有例外:当出现特殊的函数签名时。 如果签名里有一个参数的类型是单一的字符串字面量(比如,不是字符串字面量的联合类型),那么它将会被提升到重载列表的最顶端
到此这篇关于ts中最常见的声明合并(接口合并)的文章就介绍到这了,更多相关ts中的接口合并内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 11:59:38,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/60f038633c4bf785e308f9fd8ace03ec.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:TS中最常见的声明合并(接口合并).doc
本文 PDF 下载地址:TS中最常见的声明合并(接口合并).pdf
留言与评论(共有 0 条评论) |