函数参数的类型可以使用联合类型?,让我们传递的值可以有多种类型的情况。下面是写的一个简单函数,参数 x 可以有 number、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("");
} else {
return x;
}
}
调用时不看源码的文档,直接鼠标悬浮在函数上快速地浏览说明文档:
传递的是 string 类型的字符串,但给出的文档还需要我们猜测,因此,使用函数重载,结果又是怎么样的呢?
/**
* 输入数字 123 的时候,输出反转的数字 321
* @param x number
*/
function reverse(x: number): number;
/**
* 输入字符串 'hello' 的时候,输出反转的字符串 'olleh'
* @param x string
*/
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("");
} else {
return x;
}
}
给每一个联合类型都提供一个重载函数,函数的具体实现还是由第三个函数中(联合类型)来。每一个重载函数都有一份说明文档,根据传递的参数类型,匹配对应的说明文档:
这样的好处就是,以后遇到了函数的参数存在联合类型的情况下,避免日后快速查看说明文档而疑惑。
标签:TypeScript,return,reverse,number,文档,重载,string,函数 From: https://www.cnblogs.com/Enziandom/p/16717775.html