前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript-函数兼容性

TypeScript-函数兼容性

原创
作者头像
杨不易呀
发布2023-09-28 19:30:09
1370
发布2023-09-28 19:30:09
举报
文章被收录于专栏:杨不易呀

参数个数

  • 可以将参数少的函数赋值给参数多的函数
代码语言:typescript
复制
let fn1 = (x: number, y: number) => {
};
let fn2 = (x: number) => {
};

fn1 = fn2;
  • 不可以 将参数多的函数赋值给参数少的函数
image-20211201213821667
image-20211201213821667
代码语言:typescript
复制
let fn1 = (x: number, y: number) => {
};
let fn2 = (x: number) => {
};

fn2 = fn1;

参数类型

  • 可以 将参数类型一样的函数赋值给参数类型一样的函数
代码语言:typescript
复制
let fn1 = (x: number) => {
};
let fn2 = (x: number) => {
};
let fn3 = (x: string) => {
};
fn1 = fn2;
fn2 = fn1;
  • 不可以 将参数类型不一样的函数赋值给参数类型不一样的函数, 必须一模一样
image-20211201214003510
image-20211201214003510
代码语言:typescript
复制
let fn1 = (x: number) => {
};
let fn2 = (x: number) => {
};
let fn3 = (x: string) => {
};

fn1 = fn3;
fn3 = fn1;

返回值类型

  • 可以 将返回值类型一样的函数赋值给返回值类型一样的函数
代码语言:typescript
复制
let fn1 = (): number => 123;
let fn2 = (): number => 456;
let fn3 = (): string => 'abc';
fn1 = fn2;
fn2 = fn1;
  • 不可以 将返回值类型不一样的函数赋值给返回值类型不一样的函数,必须一模一样
image-20211201215347612
image-20211201215347612
代码语言:typescript
复制
let fn1 = (): number => 123;
let fn2 = (): number => 456;
let fn3 = (): string => 'abc';

fn1 = fn3;
fn3 = fn1;

函数双向协变

参数的双向协变

代码语言:typescript
复制
let fn1 = (x: (number | string)) => {
};
let fn2 = (x: number) => {
};
fn1 = fn2;
fn2 = fn1;

返回值双向协变

  • 但是可以将返回值是具体类型的赋值给联合类型的
代码语言:typescript
复制
let fn1 = (x: boolean): (number | string) => x ? 123 : 'abc';
let fn2 = (x: boolean): number => 456;
fn1 = fn2;
  • 不能将返回值是联合类型的赋值给具体类型的
代码语言:typescript
复制
let fn1 = (x: boolean): (number | string) => x ? 123 : 'abc';
let fn2 = (x: boolean): number => 456;
fn2 = fn1;

函数重载

代码语言:typescript
复制
function add(x: number, y: number): number;
function add(x: string, y: string): string;
function add(x, y) {
    return x + y;
}

function sub(x: number, y: number): number;
function sub(x, y) {
    return x - y;
}
  • 不能将重载少的赋值给重载多的
代码语言:typescript
复制
function add(x: number, y: number): number;
function add(x: string, y: string): string;
function add(x, y) {
    return x + y;
}

function sub(x: number, y: number): number;
function sub(x, y) {
    return x - y;
}

let fn = add;
fn = sub;
  • 可以将重载多的赋值给重载少
代码语言:typescript
复制
function add(x: number, y: number): number;
function add(x: string, y: string): string;
function add(x, y) {
    return x + y;
}

function sub(x: number, y: number): number;
function sub(x, y) {
    return x - y;
}

let fn = sub;
fn = add;
输入图片说明
输入图片说明

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

输入图片说明
输入图片说明

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参数个数
  • 参数类型
  • 返回值类型
  • 函数双向协变
    • 参数的双向协变
      • 返回值双向协变
      • 函数重载
      • 最后
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档