typescript - 如何基于通用类型 "T"初始化 TypeORM 存储库?

标签 typescript generics typeorm

我想基于通用类型启动一个 TypeORM 存储库。

例如:

import { Connection, Repository } from 'typeorm';

export class GenericService<T> {
    private repository: Repository<T>;

    constructor(connection: Connection) {
        this.repository = connection.getRepository(T);
        // 'T' only refers to a type, but is being used as a value here.ts(2693)
    }

    public async list(): Promise<T[]> {
        return await this.repository.find();
    }

}

但是我无法将通用类型传递给 ORM 存储库工厂。

'T' only refers to a type, but is being used as a value here.ts(2693



如何基于通用类型创建此通用服务?

附注。我正是用 C# 做到了这一点,而且效果很好。它为我节省了很多时间

最佳答案

您不能在 Typescript 中使用类型作为值,因此您需要使用泛型来对值进行类型检查:

import { Connection, Repository } from 'typeorm';
    
export class GenericService<T> {
   private repository: Repository<T>;
    
   constructor(connection: Connection, repo: T) {
      this.repository: T = connection.getRepository(repo);
   }
    
   public async list(): Promise<T[]> {
      return await this.repository.find();
   }
    
}

关于typescript - 如何基于通用类型 "T"初始化 TypeORM 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56720054/

相关文章:

angular - 重新初始化一个已经加载的 Angular 组件

javascript - 从 TypeScript 定义导入解析和拒绝函数类型

swift - 数组的通用扩展不起作用

postgresql - 使用分页时如何提高嵌套 graphql 连接的性能

javascript - 如何从 TypeORM 属性装饰器中获取值

postgresql - 跨模式与 typeorm 连接

javascript - 在 TypeScript 中将类导出为 Node.js 模块

typescript - 什么时候使用分号合适?

C# 泛型类定义与 inerited 类语法错误

c# - 可以为 web api 使用通用方法吗?