声明合并

声明合并

定义了两个相同名字的函数、接口或类,那么它们会合并成一个类型。

函数的合并

可以使用重载定义多个函数类型:

js 复制代码
function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string {
    if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
    } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
    }
}

接口的合并

接口中的属性在合并时会简单的合并到一个接口中:

js 复制代码
interface Alarm {
    price: number;
}
interface Alarm {
    weight: number;
}
// 等价于
interface Alarm {
    price: number;
    weight: number;
}

ps:合并的属性的类型和属性值必须是唯一的

js 复制代码
interface Alarm {
    price: number;
}
interface Alarm {
    price: number;  // 虽然重复了,但是类型都是 `number`,所以不会报错
    weight: number;
}

interface Alarm {
    price: number;
}
interface Alarm {
    price: string;  // 类型不一致,会报错
    weight: number;
}

interface Cat {
  name:"小橘"
}

interface Cat {
   //编译报错
  name:"小橘1";
  age:3
}

接口中方法的合并,与函数的合并一样:

js 复制代码
interface Alarm {
    price: number;
    alert(s: string): string;
}
interface Alarm {
    weight: number;
    alert(s: string, n: number): string;
}
// 等价于
interface Alarm {
    price: number;
    weight: number;
    alert(s: string): string;
    alert(s: string, n: number): string;
}

类的合并

类的合并与接口的合并规则一致。

相关推荐
Dragon Wu8 分钟前
前端 下载后端返回的二进制excel数据
前端·javascript·html5
北海几经夏14 分钟前
React响应式链路
前端·react.js
晴空雨42 分钟前
React Media 深度解析:从使用到 window.matchMedia API 详解
前端·react.js
一个有故事的男同学43 分钟前
React性能优化全景图:从问题发现到解决方案
前端
探码科技1 小时前
2025年20+超实用技术文档工具清单推荐
前端
Juchecar1 小时前
Vue 3 推荐选择组合式 API 风格(附录与选项式的代码对比)
前端·vue.js
uncleTom6661 小时前
# 从零实现一个Vue 3通用建议选择器组件:设计思路与最佳实践
前端·vue.js
影i1 小时前
iOS WebView 异步跳转解决方案
前端
Nicholas681 小时前
flutter滚动视图之ScrollController源码解析(三)
前端
爪洼守门员1 小时前
安装electron报错的解决方法
前端·javascript·electron