TypeScript真香系列-函数

前言

TypeScript真香系列的内容将参考中文文档,但是文中的例子基本不会和文档中的例子重复,对于一些地方也会深入研究。另外,文中一些例子的结果都是在代码没有错误后编译为JavaScript得到的。如果想实际看看TypeScript编译为JavaScript的代码,可以访问TypeScript的在线编译地址,动手操作,印象更加深刻。

函数的基础

函数是JavaScript应用程序的基础,同样TypeScript也可以创建有名字的函数和匿名函数,不过TypeScript在JavaScript的基础之上添加了很多额外而且很有用的功能。

函数类型及定义

TypeScript中也可以以函数式声明和函数表达式来定义函数:

// 函数式声明
function sum(a: number, b: number): number {
    return a + b;
}

//函数表达式
let sumTwo = function(a: number, b: number): number return a + b; };

在上面的例子中,我们给函数添加了类型,给输入的参数和返回值都进行了严格的定义,这样在开发的时候,会避免一些问题的出现。当然我们也可以省略返回值类型,因为TypeScript可以根据返回语句自动的推断出返回值的类型,这被叫做“按上下文归类”,这个在后续的章节会讲到。

function sum(a: number, b: number){
    return a + b;
}

既然是JavaScript的超集,那么箭头函数也是可以的:

let sumTwo = (a: number, b: number) => { return a + b; };

可选参数

当我们在TypeScript函数中指定了参数后,在调用函数的时候就必须传入相应个数的参数。

function sum(a: number, b: number{
    return a + b;
}
sum(13); //4
sum(1); //错误,期望是两个参数,但是只有一个

在JavaScript中,函数的参数是可选的,如果在调用函数的时候没有传指定的参数的话,这个参数就是undefined。在TypeScript中我们可以指定参数为可选,这样我们在调用函数的时候就可以选择传参了。

function sum(a: number, b ?: number{
    return a + b; // 错误,b可能是undefined
}
sum(13);
sum(1);

上面的例子中,a加一个undefined是没有意义的,所以我们可以像上面这个例子一样,用 “?” 来表示可选:

function sum(a: number, b?: number{
    if (b) { 
        return a + b;
    } else {
        return a;
    }
    
}
sum(13); // 4
sum(1);  //1

更可以这样:

function sum(a: number, b?: number{
   return b ? a + b: a ;
}
sum(13); //4
sum(1);  //1

默认参数

和JavaScript一样,我们同样可以给TypeScript函数的参数指定默认值:

function sum(a: number, b = 6{
    return a + b;
}
sum(13); //4
sum(1); //7

可以从上面的例子看出来,给参数设默认值后的参数如果在末尾的话,那么在函数调用的时候也是可选的。如果默认值参数不在末尾呢?可以看看下面这个例子:

function sum(a = 1, b : number{
    return a + b;
}
sum(13); //4
sum(1); //错误,期望是两个参数,但是只有一个参数
sum(undefined1); //2

剩余参数

TypeScript中的剩余参数也可以说就相当于js中的剩余操作符(rest),用 “…” 表示,用法差不多:

function fn(a: number, b: string, ...args:string[]{  
   return args.length;
}
fn(1"2""3""4""5" );  // 3

还有诸多类似JavaScript函数的操作,在TypeScript也有所体现。

参考

https://github.com/zhongsp/TypeScript

最后

文中有些地方可能会加入一些自己的理解,若有不准确或错误的地方,欢迎指出~


原文始发于微信公众号(旅行中的程序员):TypeScript真香系列-函数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/217362.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!