接口
对象类型接口
interface List {
readonly id:number;
name:string;
age?:number;
}
interface Result {
data:List[]
}
function render(result:Result) {
result.data.map((item) => {
console.log(item.id,item.name)
if(item.age){
console.log(item.age)
}
})
}
let res ={
data : [
{
id:1,
name:'a'
},
{
id:2,
name:'s'
}
]
}
render(res)
函数类型接口
interface Add {
(a:number,b:number) : number
}
type Add = (a:number,b:number) => number
let add:Add = (a,b) => a+b;
混合类型接口
interface Lib {
():void;
version:string;
doSomething() :void;
}
function getLib(){
let lib:Lib = (() => {}) as Lib; //使用类型断言
lib.version = '1'
lib.doSomething = () => {
}
return lib;
}
let lib1 = getLib()
lib1()
lib1.doSomething()
let lib2 = getLib()
函数相关知识点梳理
函数定义:4种
function add1_1(x:number,y:number){
return x + y;
}
let add1_2 : (x:number,y:number) => number;
type add1_3 = (x:number,y:number) => number;
interface add1_4 {
(x:number,y:number) :number;
}
函数参数的要求
add1_1(1,2)
add1_1(1)
add1_1(1,2,3)
function add1_5(x:number,y?:number){
return y ? x+y :x
}
add1_5(1)
add1_5(1,2)
function add1_6(x:number,y=0,z:number,q=2){
return x + y + z + q;
}
add1_6(1,undefined,2)
function add1_7(x:number,...list:number[]){
return x + list.reduce((prev,curr) => prev + curr)
}
console.log(add1_7(1,2,3,4,5))
function add1_8(...rest:number[]):number
function add1_8(...rest:string[]):string
function add1_8(...rest:any):any {
let first = rest[0]
if(typeof first === 'string'){
return rest.join('')
}
if(typeof first === 'number'){
return rest.reduce((pre,cur) => pre + cur)
}
}
console.log(add1_8(1,2,3)) //6
console.log(add1_8('a','b','c')) //abc