函数重载|ts

94 阅读1分钟

函数的重载

重载的概念是后端的概念,定义就是定义一些同名的方法,通过定义不同的输入来区分这些方法。JavaScript中不支持函数的重载,typescript也就不支持

例如,我们想要输入numberstring类型的value,得到对应number[]string[]类型的返回值,下面这样看似是一对一的写法,其实有四种结果,string -> number[], string -> string[], number -> number[], number -> string[].

function toArray(value: number | string): number[] | string[] {}

那么我们需要在上面声明这样的关系,这两个重载签名只负责函数的类型定义,不包含实际的函数实现。。(注:只有一个具体的实现)

function toArray(value: number): number[];
function toArray(value: string): string[];
function toArray(value: string | number): string[] | number[] {
    if(typeof value === 'string') {
        return value.split('')
    } else {
        return value.toString().split('').map(Number)
    }
}

这样,通过函数重载和条件语句,函数能够根据传入的参数 value 的类型,灵活地返回符合要求的数组类型(字符串数组或数字数组)。这种模式在 TypeScript 中常用于根据不同的输入类型执行不同的操作。