TS中最常见的声明合并(接口合并)
2022-01-08 04:07
435 查看
目录
前言:
今天要讲的内容还是TS相关,在TS中最常见的声明合并:接口合并
在聊接口合并之前,我们先来聊聊声明合并
声明合并:
什么是声明合并?
其实很好理解,TS中的声明合并,指的就是编译器会针对同名的声明合并为一个声明
合并的结果:
合并后的声明会同时拥有原先两个或多个声明的特性
疑问:
那这两个或多个具体指的是什么呢?
其实得分几种情况讲,今天要讲的就是其中一种,最简单也最常见的声明合并类型是接口合并
1.合并接口
我们刚刚说了,“合并后的声明会同时拥有原先两个或多个声明的特性”
接口的合并也是一样,它会将双方的成员放到一个同名的接口里
需要注意的是,接口里面的成员有函数成员和非函数成员,情况有所不一样
1.1非函数成员
例如:
interface Box { height: number; } interface Box { width: number; } let box: Box = {height: 2, width: 3};
上述代码中,定义了两个名字都为Box
的同名接口(实际开发中,可能来源于不同的文件),最终里面的东西会混合在一起
但是需要注意,以上情况里头的成员都是唯一的,但如果两个接口中同时声明了同名的非函数成员且它们的类型不同,则编译器会报错
1.2函数成员
而对于里头的函数成员来说,每个同名函数声明都会被当成这个函数的一个重载。而且当接口 A与后来的接口 A合并时,后面的接口具有更高的优先级
例如官方的例子:
interface Cloner { clone(animal: Animal): Animal; } interface Cloner { clone(animal: Sheep): Sheep; } interface Cloner { clone(animal: Dog): Dog; clone(animal: Cat): Cat; }
最终会合并成一个声明,如下:
interface Cloner { clone(animal: Dog): Dog; clone(animal: Cat): Cat; clone(animal: Sheep): Sheep; clone(animal: Animal): Animal; }
需要注意两点:
- 每组接口里的声明顺序不变
- 各组接口之间的顺序是后来的接口重载出现在靠前位置
不过也有例外:当出现特殊的函数签名时。 如果签名里有一个参数的类型是单一的字符串字面量(比如,不是字符串字面量的联合类型),那么它将会被提升到重载列表的最顶端
到此这篇关于TS中最常见的声明合并(接口合并)的文章就介绍到这了,更多相关TS中的接口合并内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章推荐
- 错误 1 类,结构或接口成员声明中的标记"="无效
- AE常见接口之间的关系(较笼统)+arcgis常见概念
- 家庭影院.液晶电视.常见接口介绍
- BREW中的接口声明及使用
- 接口继承的声明问题 [C#, BCL]
- 黑马程序员_List接口及其常见子类
- “支付接口”常见问题
- AE常见接口之间的关系+常见概念
- springboot整合Mybatis【在入口类中声明到接口 @MapperScan(value="com.lin.dao")】
- C++异常处理 - 栈解旋,异常接口声明,异常类型和异常变量的生命周期
- JNA调用dll接口以及开发常见问题
- OBJC中声明字符串常量的一个常见错误
- 基于ts的动态接口数据配置的详解
- 接口测试(一)常见接口类型
- Visual C++调用WebService服务接口常见数据类型转换
- 加密的m3u8、ts文件合并
- Code Fragment-使用IXXX声明接口,IXXXImpl作为其子类
- Tensorflow常见网络接口实现(二)
- 1)编写Animal接口,接口中声明run()方法; 2)定义Bird类和Fish类实现Animal接口; 3)编写Bird类和Fish类的测试程序,并调用其中的run()方法
- 常见查询接口