5 Star 66 Fork 13

韩旭明 / grammarLearning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
07_函数_4、函数重载签名.ts 1.24 KB
一键复制 编辑 原始数据 按行查看 历史
韩旭明 提交于 2023-01-27 16:33 . 修改目录
/**
* TypeScript的函数重载签名
* 可以使用 TypeScript 提供的函数重载签名,实现与入参关联的返回值类型,获得更精确的类型标注能力。
*
* 需要注意的地方,
* 拥有多个重载声明的函数在被调用时,是按照重载的声明顺序往下查找的。
* 因此在第一个重载声明中,为了与逻辑中保持一致,
* 即在 bar 为 true 时返回 string 类型,
* 这里我们需要将第一个重载声明的 bar 声明为必选的字面量类型。
*
* 实际上,TypeScript 中的重载更像是伪重载,它只有一个具体实现,其重载体现在方法调用的签名上而非具体实现上。
* 而在如 C++ 等语言中,重载体现在多个名称一致但入参不同的函数实现上,这才是更广义上的函数重载。
*/
function func(foo: number, bar: true): string;
function func(foo: number, bar?: false): number;
function func(foo: number, bar?: boolean): string | number {
if (bar) {
return String(foo);
} else {
return foo * 599;
}
}
const res1 = func(599); // number
const res2 = func(599, true); // string
const res3 = func(599, false); // number
//export {}:解决“无法重新声明块范围变量”错误提示问题
export { }
1
https://gitee.com/hanxuming/grammar-learning.git
git@gitee.com:hanxuming/grammar-learning.git
hanxuming
grammar-learning
grammarLearning
master

搜索帮助