解决函数传入参数类型与函数返回值类型一致的问题。javascript
一个函数,我但愿传入数字,返回数字;传入字符串,返回字符串, 即java
function fn1 (a: number): number {
return a + 1
}
function fn2 (b: string): string {
return b + ' :fn2'
}
复制代码
有没有支持不一样类型的方式,any数组
function fn3 (c: any): any {
return c
}
复制代码
但是使用any,不能保证返回值类型和传入参数类型属于相同类型函数
使用泛型!ui
function fn1<T>(a: T): T{
return a + 1
}
复制代码
能够看到,使用尖括号便可使用泛型函数spa
还有一种方式使用泛型函数:类型推断,什么也不用作,智能判断code
有个问题,下面的泛型函数,函数体中访问了参数的length
属性,若是传入参数属字符串或数组,没问题,但若是是number
类型呢,length
属性确定是undefined
ip
function fn1<T>(a: T): T{
console.log(a.length)
return a + 1
}
复制代码
使用泛型变量, 声明泛型数组便可字符串
function fn1<T>(a: T[]): T[]{
console.log(a.length)
return a + 1
}
复制代码