泛型的概念
一般的计算机设计语言都有泛型的概念。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。这个“以后”,可以是编译期间,也可以是运行时。
一个例子
有以下功能函数:
function log(data){
console.log(data)
return data
}
log 函数接收数据,打印并返回该数据。当我们使用TS时,需要指定data参数的类型,函数返回的类型:
function log(data: string): string {
console.log(data)
return data
}
执行log('1')
,会正常输出,但时当你执行log(1)
时,系统提示你,log函数应当传入字符串,而不是数字。而我们的这个函数,当然不仅仅想只能够在字符串string
下使用。
我们想要的是,传入什么类型数据,就返回什么类型数据。
其他类型
想要在data为number
类型下成立,只需定义logNumber
:
function logNumber(data: number): number {
console.log(data)
return data
}
难道有多少种类型,我就要写多少个函数声明吗?那不得累死。
危险的做法
上述问题有一种危险做法,之所以是危险,因为它不规范,违背了TS的设计原则:
function logNumber(