函数声明
function test() {}
匿名函数
var fun = function() {}
ts函数声明法
正确写法
function run():string{
return 'hello'
}
错误写法
function run():string{
return 911
}
ts匿名函数
var fun = function():number{
return 911
}
ts中定义方法传参
function getInfo(name:string, age:number):string{
return `${name}--${age}`
}
var getInfo = function (name:string, age:number):string{
return `${name}--${age}`
}
函数没有返回值void
function run():void{}
方法的可选参数
es5方法的实参和形参可以不一样,但是ts中必须一样,如果不一样就需要配置可选参数。
问号(?)配置可选参数
注意可选参数必须配置到参数的最后面
function getInfo(name:string, age?:number):string{
if(age){
return `${name}--${age}`
} else {
return `${name}`
}
}
默认参数(可选参数)。es5没法设置默认参数,es6和ts中可以设置默认参数
function getInfo(name:string, age:number=26):string{
return `${name}--${age}`
}
剩余参数
三点运算符接受新参传过来的值
function sum(a:number, b:number, c:number, d:number):number{
return a+b+c+d
}
sum(1, 2, 3, 4)
function sum(...result:number[]):number{
for sum = 0
for (var i = 0; i < result.length; i++) {
sum += result[i]
}
return sum
}
sum(1, 2, 3, 4)
函数的重载
ts中的重载:通过为一个函数提供多个函数类型定义来实现多种功能的目的
es5中出现同名方法,下面的方法会替换上面的方法
fuction css(config: any):any{}
function css(config: any, value: any):void{}
ts中的重载
function getInfo5(name: string):string;
function getInfo5(age: number):number;
function getInfo5(str: any):any{
if (typeof str === 'string') {
return name
} else {
return str
}
}
getInfo('Jodge')
getInfo(19)
function getInfo(name: string):string;
function getInfo(name: string, age: number):string;
function getInfo(name: any, age?:any):any{
if (age) {
return `${name}--${age}`
} else {
return name
}
}
getInfo('alex') // 正确
getInfo(911) // 错误
getInfo('alex', 19) // 正确
箭头函数es6
剪头函数this指向上下文
setTimeout(function (){}, 1000)
setTimeout(() => {}, 1000)