arkts泛型
时间: 2025-07-25 13:21:32 浏览: 0
ArkTS 中的泛型编程是一种编写灵活且可重用代码的方式,它允许开发者创建能够处理多种数据类型的函数、类和接口。通过泛型,可以实现类型参数化,从而提高代码的可维护性和可扩展性。
### 泛型函数
在 ArkTS 中,可以使用类型参数来定义泛型函数。例如:
```typescript
function identity<T>(arg: T): T {
return arg;
}
```
上述 `identity` 函数接受一个类型为 `T` 的参数,并返回相同类型的值。调用该函数时,可以指定具体的类型,如 `identity<string>("hello")` 或者让编译器自动推断类型,如 `identity(42)`。
### 泛型类
泛型类允许在类级别上定义类型参数。这使得类的属性和方法可以使用这些类型参数。例如:
```typescript
class Box<T> {
private value: T;
constructor(value: T) {
this.value = value;
}
public getValue(): T {
return this.value;
}
}
let box = new Box<number>(10);
console.log(box.getValue()); // 输出: 10
```
在这个例子中,`Box` 类有一个类型参数 `T`,其构造函数和方法都使用了这个类型[^1]。
### 泛型接口
泛型接口与泛型类类似,它们也允许在接口定义时使用类型参数。这样可以在不同的实现中保持类型的一致性。例如:
```typescript
interface Container<T> {
add(item: T): void;
get(index: number): T;
}
class StringContainer implements Container<string> {
private items: string[] = [];
add(item: string) {
this.items.push(item);
}
get(index: number): string {
return this.items[index];
}
}
```
这里定义了一个 `Container` 接口,其中的方法使用了类型参数 `T`。然后 `StringContainer` 实现了这个接口,并指定了 `T` 为 `string`[^1]。
### 使用内置泛型类型
ArkTS 提供了一些内置的泛型类型,比如 `Array<T>` 和 `Record<K, V>`。`Array<T>` 表示数组元素的类型,而 `Record<K, V>` 则用于表示键值对对象,其中键是 `K` 类型,值是 `V` 类型。例如:
```typescript
let names: Array<string> = ["Alice", "Bob"];
let p: Record<string, string> = { name: "小强", sex: "man" };
console.log(p.name); // 输出: 小强
```
### 抽象类与泛型结合
抽象类(Abstract Class)也可以与泛型一起使用,以提供更高级别的抽象和复用。例如:
```typescript
abstract class BaseRepository<T> {
abstract find(id: number): T | null;
abstract save(entity: T): void;
}
class UserRepository extends BaseRepository<User> {
find(id: number): User | null {
// 实现查找用户逻辑
return null;
}
save(entity: User): void {
// 实现保存用户逻辑
}
}
```
在这个例子中,`BaseRepository` 是一个抽象类,它有两个泛型方法 `find` 和 `save`。具体的 `UserRepository` 继承并实现了这些方法,同时指定了 `T` 为 `User` 类型[^4]。
---
阅读全文
相关推荐



















