声明函数:
//第一示例
let fnc = function(name:string,age:number):string{
return name + age
}
let res = fnc("张三",18)
//第二示例
let fnc = function(name:string,age?:number):string{
return name + age
}
let res2 = fnc("张三")
//第三示例
let fnc = function(name:string,age:number=15):string{
return name + age
}
let res3 = fnc("张三")
console.log(res) //张三18
console.log(res2) //张三undefined
console.log(res3) //张三10
函数重载:
函数重载可以定义多套规则,但是操作函数只能有一个。
//规则1
function fnc(params1:string):void
//规则2
function fnc(params1:number,params2:string):void
//操作函数 只能有一个
function fnc(params1:any,params2:any):void{
console.log(params1)
console.log(params2)
}
fnc('张三')
fnc(15,'李四')
- fnc(‘张三’)----->TS会自动识别并遵循规则一,所以此时输出以此为 张三 undefined
- fnc(15,‘李四’)----->TS会自动识别并遵循规则二,所以此时输出以此为 15 李四
联合类型与交叉类型:
//联合类型
let num:string | number = 1 //此时nmu类型可为string或number
//交叉类型
interface A {
name:string
}
interface B {
age:number
}
let obj:A & B = {
name:'张三',
age:15
}
此时,obj就拥有了A、B的属性啦,相当于整合成了一个,也可以使用extends来继承也可以实现同样的效果。
如:
interface A {
name:string
}
interface B extends A {
age:number
}
let obj:B = {
name:'张三',
age:111
}
至此。