js ts函数重载

1 JS函数重载

1.1 arguments参数

 const arr = [1, 2, 3, 4, 5]; //不能写成箭头函数,否则this指向window
        Array.prototype.partify = function () {
    
            const len = arguments.length; 
            switch (len) {
    
                case 0: return this; 
                case 1: return `(${
     arguments[0]})`; 
                case 2: return `${
     arguments[0]}-${
     arguments[1]}`; 
            } 
        }; 
        console.log(arr.partify()); //[1,2,3,4,5] 
        console.log(arr.partify(1)) //(1)
        console.log(arr.partify(1,2)) //1-2

1.2 闭包+arguments参数

  function add(obj, name, fn) {
   
            const old = obj[name];
            obj[name] = function () {
   
                if (fn.length === arguments.length) {
   
                    return fn.apply(this, arguments)
                } else if (typeof old === 'function') {
   
                    return old.apply(this, arguments)
                }
            }
        }

        const student = {
    name: 'jane' }
        add(student, 'getInfo', function () {
   
            console.log(this.name)
        })
        add(student, 'getInfo', function (suffix) {
   
            console.log(`${
     this.name}-${
     suffix}`)
        })
        add(student, 'getInfo', function (a, b) {
   
            console.log(`${
     this.name}-${
     (a + b)}`)
        })
        student.getInfo()  // jane
        student.getInfo('cloud') // jane-cloud
        student.getInfo(20, 40) // jane-60

2 TS函数重载

type unionType = number | string;
class Action {
   
   //定义签名
   start(name: number, age: number): string;
   start(name: string, age: string): string;
   start(name: string, age: number): string;
   start(name: number, age: string): string;
   //定义实现
   start(name: unionType, score: unionType) {
   
       if (typeof name === 'string' || typeof score === 'string') {
   
           return 'person:' + name + ':' + score; 
       }
   }
}
const action = new Action();
action.start('jane', 5);//person:jane:5
action.start(5, 'good');//person:5:good
action.start(1, 5);//无输出

相关推荐

  1. js ts函数重载

    2024-01-25 08:36:05       26 阅读
  2. C++函数重载

    2024-01-25 08:36:05       19 阅读
  3. C++:重载函数

    2024-01-25 08:36:05       15 阅读
  4. C++之函数重载

    2024-01-25 08:36:05       21 阅读
  5. C++中的函数重载

    2024-01-25 08:36:05       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 08:36:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 08:36:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 08:36:05       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 08:36:05       20 阅读

热门阅读

  1. Qt Quick 项目(第二集Qt Quick Application创建)

    2024-01-25 08:36:05       37 阅读
  2. 火星 转 wgs84 转火星,转换精度测试

    2024-01-25 08:36:05       37 阅读
  3. 【计算机二级考试C语言】C输入&输出

    2024-01-25 08:36:05       36 阅读
  4. 在Nginx中配置实现动静分离

    2024-01-25 08:36:05       27 阅读
  5. 【OpenCV】P2 程序加载显示图片

    2024-01-25 08:36:05       32 阅读
  6. OpenCV-计算机视觉开发

    2024-01-25 08:36:05       32 阅读
  7. ubuntu-base(arm64与riscv64) 根文件系统

    2024-01-25 08:36:05       33 阅读
  8. git从远程分支合并到本地分支

    2024-01-25 08:36:05       31 阅读