编程都是需要函数的,因为有了函数就能复用很多东西了。不仅仅能够复用代码,还能保持代码的简洁性和提高编程的逻辑性。
在原生的JavaScript中,函数的定义有三种,
function foo() {} // 直接声明
var foo = function() {} // 将函数赋值给变量
var Foo = {
a : function() {
}
} // 对象函数
那么在typescript当中,又是怎么样的呢?
1、第一种
function foo():string {
return 'hahaha'
}
var result = foo() // hahaha
这是普通的函数声明,直接返回hahaha
。
2、第二种,形参
function foo(a:number):string {
return '这个数字是' + a
}
var result = foo(18) // 这个数字是18
在foo():string
,后面的变量告诉该函数返回的是什么值,如果是string
则返回的是string
类型,如果是:number
则返回的是number
类型,如果不写,则默认为void
类型。
在函数当中,在大括号里写的变量代表的是形参。
正如上诉代码
function foo(a:number):string () {
}
// a:number 代表的是形参
var result = foo(18) // 18代表的是实参,实际传入的参数
凡是有一定的JavaScript基础我们都知道,函数体写了几个形参,就必须传入几个参数,多一个少一个都不行,但是,在typescript中,可以选择性的传实参,这点是比较灵活。
有可选参数的函数,采用?
标注
function person(age:number, name?:string) {
let a:string = ''
a = "find" + age + 'years old'
if(name != undefined) {
a = a + '' +name
}
return a + 'person'
}
var result = person(18); // find 18 years old
var result1 = person(18, 'does');
// find 18 does years old
console.log(result);
console.log(result1);
由上诉的例子可以知道,name
作为可选参数,是可传可不传的。体现typescript的灵活性。
返回指定类型的函数
同样的,我们也可以给函数增加一个默认的返回参数。
同样复用上面的代码。
function person(age:number, name?:string):string {
let a:string = ''
a = "find" + age + 'years old'
if(name != undefined) {
a = a + '' +name
}
return a + 'person'
}
var result = person(18); // find 18 years old
var result1 = person(18, 'does');
// find 18 does years old
console.log(result);
console.log(result1);
在大括号后面增加:string
,默认返回的是string
类型的参数
不限参数个数的函数
简单的理解就是,出去逛街的时候,你可以会买一个商品,也可能会买多个商品。所以此时的函数是不确定性的。比如写一个shopping
函数
function shopping(...type:string[]):string {
let a:string = "我买到了"
for(let i = 0; i < type.length; i++) {
a = a + type[i]
if(i