阅读 174

TypeScript中的Function函数(typescript语法)

有句俗话说在JS中,函数是一等公民。那么在TS中呢?

函数是JavaScript应用程序的基础。 它帮助我们实现抽象层,模拟类,信息隐藏和模块。在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。

函数

与JavaScript一样,TypeScript函数可以创建有名字的函数和匿名函数。

函数类型

在TypeScript中我们可以给函数定义数据类型。

function add(x:number,y:number):number{     return x+y } add(1,2) let result = add(1,2) 复制代码

当然如果我们的数据类型错误他会报错:

function add(x:number,y:number):number{     return x+y } add('1','2') let result = add(1,2) 复制代码

报错信息:

同样的如果参数的数量不对也会报错:

function add(x:number,y:number):number{     return x+y } add(1,2,3) let result = add(1,2) 复制代码

报错信息:

function add(x:number,y:number):number{     return x+y } add(1) let result = add(1,2) 复制代码

报错信息:

可选参数

在TypeScript里我们可以在参数名旁使用?实现可选参数的功能。

function add(x:number,y:number,z?:number):number{     if(typeof z=== 'number'){         return x+y+z     }     else{         return x+y     } } 复制代码

注意:如果可选参数后面再加确定参数那么是会报错的。

function add(x:number,y:number,z?:number,t:number):number{     if(typeof z=== 'number'){         return x+y+z     }     else{         return x+y     } } 复制代码

报错信息:

函数表达式

const add=(x:number,y:number,z?:number):number=>{     if(typeof z=== 'number'){         return x+y+z     }     else{         return x+y     } } 复制代码

但这个时候我们将鼠标放到add上面后会发现add获得了一个类型(函数类型)

如果我们将这里函数类型的add赋值给别的类型的变量会报错:

const add=(x:number,y:number,z?:number):number=>{     if(typeof z=== 'number'){         return x+y+z     }     else{         return x+y     } } let add2:string = add 复制代码

报错信息:

如果要赋值正确的写法如下:

const add=(x:number,y:number,z?:number):number=>{     if(typeof z=== 'number'){         return x+y+z     }     else{         return x+y     } } let add2:(x:number,y:number,z?:number) => number = add 复制代码

拓展

interface也可以描述函数类型

示例:

const add=(x:number,y:number,z?:number):number=>{     if(typeof z=== 'number'){         return x+y+z     }     else{         return x+y     } } interface fun{     (x:number,y:number,z?:number):number } let add2:fun = add


作者:莫笑沉吟
链接:https://juejin.cn/post/7031694022381043720

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐