1. 泛型
function func(age: number): number{
return age
}
假如说我们要改变函数的入参的类型
1. 泛型入门
function funcA<Type>(age: Type) : Type{
return age
}
// 在调用的时候就可以
let a = funcA('fdasfa')
let b = funcA(123);
// console.log(a)
// console.log(b)
2. 使用泛型类型变量
function funcB<Type>(arg: Type): Type {
// 报错Type 上不存在length属性
// console.log(arg.length)
return arg
}
function funcBB<Type>(arg: Type[]): Type {
// 约束 Type 要有length 属性
// console.log(arg.length)
return
}
3. 通用类型
给函数声明一个类型。
function C<Type>(arg: Type): Type{
return arg
}
let myIdentity: <Input>(input: Input) => Input = C;
可以将泛型类型写为 对象字面量类型的调用签名: 对象字面量是什么? what?
function CC<Type>(arg: Type): Type{
return arg
}
let c3 : {<Input>(input: Input): Input} = CC
把对象字面量, 移到一个通用的接口上面。
interface ID{
<Type>(arg: Type): Type
}
function D1<Type>(arg: Type): Type {
return arg
}
let myD1 : ID = D1 // 就可以用这个接口来描述函数的类型了。
在上面的这个栗子中, 我们希望泛型参数可以被整个接口所用。 形如 Dictionary 而不是 Dictionary 。我们可以这样做