zoukankan      html  css  js  c++  java
  • typescript的重载

    重载允许一个函数接受不同数量或类型的参数时,作出不同的处理。

    比如,我们需要实现一个函数 reverse,输入数字 123 的时候,输出反转的数字 321,输入字符串 'hello' 的时候,输出反转的字符串 'olleh'

    利用联合类型,我们可以这么实现:

    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('');
        }
    }

    然而这样有一个缺点,就是不能够精确的表达,输入为数字的时候,输出也应该为数字,输入为字符串的时候,输出也应该为字符串。

    这时,我们可以使用重载定义多个 reverse 的函数类型:

    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('');
        }
    }

    上例中,我们重复定义了多次函数 reverse,前几次都是函数定义,最后一次是函数实现。在编辑器的代码提示中,可以正确的看到前两个提示。

    注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确的定义写在前面。

    转自:https://ts.xcatliu.com/basics/type-of-function

  • 相关阅读:
    servlet容器与web容器的概念
    apache点NET环境
    JAVA web选型
    Web服务器排行:Nginx超越Apache 成为全球
    软件介绍(apache lighttpd nginx)
    C++性能榨汁机之虚函数的开销
    C++性能榨汁机之伪共享
    《四重缘起深般若》 和 《心经修正圆通法门》
    冥想方法
    中医方子
  • 原文地址:https://www.cnblogs.com/vickylinj/p/12193253.html
Copyright © 2011-2022 走看看