TypeScript——泛型(函数泛型、模板类型可以是多个、泛型的错误、泛型函数变量、泛型函数类型接口、泛型类泛型类泛型约束、泛型参数的默认类型)、声明文件、Vue3.0集成ts
在TypeScript中,泛型是一种创建可复用代码组件的强大机制。它允许你在类、接口、方法中使用类型参数,从而使得它们可以适用于多种类型。
以下是一些使用泛型的例子:
- 函数泛型:
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("myString"); // output will be of type 'string'
在这个例子中,我们创建了一个泛型函数identity
,它接受一个类型参数T
,并返回一个类型为T
的值。
- 多个泛型类型:
function swap<T, U>(tuple: [T, U]): [U, T] {
return [tuple[1], tuple[0]];
}
let output = swap<string, number>(["hello", 123]); // output will be ['number', 'string']
在这个例子中,我们创建了一个泛型函数swap
,它接受一个元组,并将其元素互换位置后返回。
- 泛型类型错误:
function loggingIdentity<T>(arg: T): T {
console.log(arg.length); // Error: T doesn't have .length
return arg;
}
在这个例子中,我们创建了一个泛型函数loggingIdentity
,它尝试访问一个名为length
的属性。但是,这个属性并不是所有类型都有的,所以当我们使用非具有length
属性的类型时,会发生错误。
- 泛型接口:
interface GenericIdentityFn<T> {
(arg: T): T;
}
function identity<T>(arg: T): T {
return arg;
}
let myIdentity: GenericIdentityFn<number> = identity;
在这个例子中,我们创建了一个泛型接口GenericIdentityFn
,它接受一个类型参数T
,并要求接口内的函数必须接受一个类型为T
的参数,并返回一个类型为T
的值。
- 泛型类:
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };
在这个例子中,我们创建了一个泛型类GenericNumber
,它接受一个类型参数T
,并要求类内部必须有一个名为zeroValue
的属性,其类型为T
,并有一个名为add
的方法,它接受两个类型为T
的参数,并返回一个类型为T
的值。
泛型是TypeScript中一个强大而灵活的特性,可以帮助开发者创建可复用的组件。
评论已关闭