TS - 函数类型
  xWYnr39PTA9E 2023年12月06日 19 0

学习链接:https://www.bilibili.com/video/BV1Q841197av/

函数类型-参数和返回值

函数的类型实际上指的是:函数参数和返回值的类型。

fun(参数:类型,参数:类型):函数返回值类型{ }

函数有两种类型:普通函数、箭头函数

为函数指定类型的两种方式:

  1. 单独指定参数、返回值的类型
  2. 同时指定参数、返回值的类型

单独指定参数、返回值的类型

// 普通函数
 function add(num1:number ,num2:number):number {
     return num1 + num2
 }
 
 function add(num1 ,num2):number {
     // 这里没有设置函数的参数类型,就是any类型,可以是任何值;然后返回值是number
     return num1 + num2
 }
 
 function add(num1:number ,num2:number):void {
     // 这里设置了函数的返回值为void(空值),所以下面写return会报错。
     return num1 + num2
 }
 
 function add(num1:number ,num2:number):number {
     // 这里设置了函数的返回值为number,但是在函数内部代码中没有return,也会报错。
     // return num1 + num2
 }
// 箭头函数
 const add = (num1:number , num2:number):number => {
     return num1+ num2
 }
 
 const demo=(x:string,y:string):string=>{
     return x + y; // 字符串拼接
 }

同时指定参数、返回值的类型

当函数做为表达式时,可以通过类似箭头函数形式的语法来作为函数添加类型

(这种方式只适用于函数表达式,也就是箭头函数)

// 创建函数自定义类型
 type AddFn = (num1:number ,num2:number) => number;
 
 // 使用自定义类型作为函数add的类型
 const add:AddFn = (num1,num2)=>{
     return num1 + num2;
 }
/*
 type AddFn = (num1:number ,num2:number) => number;
 在前面声明了一个类型,在const add:AddFn的时候就是代表:
     add函数接收两个参数,num1和num2都是number类型,add函数的返回值是number类型
 也就是说相当于提前声明了函数。(提前定义好函数的类型)
 */
// 使用类型别名type ,提前定义好函数的类型
 type Arrtype = (number | string)[];
 type Funtype = (a:number,b:number)=>number;
 
 // 同时指定参数和返回值类型
 const add:Funtype = (x,y)=>{
     return x+y;
 }
 add(10,20)
 // add(10,'20') --> 报错
 
 // 使用组合
 const reduce = (x:number,y:string):Arrtype=>{
     return [x,y]
 }
 reduce(1,'2')

小结

定义函数的类型

可以自己定义参数和返回值(第一种方式)

可以在前面定义好参数和返回值,然后直接使用(第二种方式)

可以组合使用:参数自己指定,返回类型在前面定义好,在定义函数时使用(第二种方式)

函数类型-void类型

TS - 函数类型_函数参数

TS - 函数类型_函数参数_02

// 函数不指定返回类型 可以省略或者return (返回值可以是any)
 const reset = () =>{
     return 123;
 }
 reset();

函数类型-可选参数

TS - 函数类型_函数参数_03

// 函数参数--配置可选参数
 // 函数默认参数是必选的
 const fn = (x:number,y:number)=>{
     
 }
 // fn(); ---> 报错
 fn(1,23);
 
 // 配置可选参数  ? 表示:出现0次或者1次(该参数),没有多次
 const fn2=(x:number,y?:number)=>{
 
 }
 fn2(1);
 fn2(1,2);
 // fn2(1,2,3); ---> 报错
 
 // 配置可选参数  ?不能放在第一个参数,如果要放,那么后面的参数也要放?
 // 可选参数只能出现在必选参数后面,可选参数后面不能出现必选参数
 const fn2=(x?:number,y?:number)=>{
     // const fn2=(x?:number,y:number)=>{ ---> 报错
 
 }
 
 
 // 函数参数的默认值,如果参数有默认值那么该参数就是可选参数(不传入值的话就是会使用默认值)
 const fn4=(a:number=2,b:string='2')=>{
     console.log(a,b);
 }
 fn4(10,'20');
 fn4();
 
 // 设置了默认值,就不用在该参数写?了(参数默认值和可选参数互斥,只需要指定一种即可)
 // 设置默认值,可传课不传,不传就是使用默认值
 // const fn4=(a:number=2,b?:string='2')=>{ ---> 报错


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

xWYnr39PTA9E
最新推荐 更多