考虑当前使用的数据类型,也考虑了未来支持的数据类型,范型要求是传入的数据类型跟返回的数据类型必须是一致的。
范型函数
function getName<T> (name: T): T {
return name
}
alert(getName<string>('Mistic')) // 如果传入的值不是string类型,Ts在编译的时候就会报错
function getAddress<T> (address: T): any { // 返回任意类型
return 'my address is ' + address
}
alert(getAddress<number>(703))
范型类
class MinNum <T> {
public list: Array<T> = []
add(value: T): void {
this.list.push(value)
}
minNum(): T {
let minNum: T = this.list[0]
for (let i = 0; i < this.list.length; i++) {
if (minNum > this.list[i]) {
minNum = this.list[i]
}
}
return minNum
}
}
let mn = new MinNum()<number>
mn.add(2)
mn.add(1)
mn.add(3)
console.log(mn.minNum())
let mN = new MinNum()<string>
mN.add('我')
mN.add('Wi-Fi')
mN.add('Mayumi')
console.log(mN.minNum())