Typescript:泛型类又扩展了另一个泛型类

编程入门 行业动态 更新时间:2024-10-06 01:35:27

<a href=https://www.elefans.com/category/jswz/34/1771354.html style=Typescript:泛型类又扩展了另一个泛型类"/>

Typescript:泛型类又扩展了另一个泛型类

所以我正在做一个基本的网络服务,它应该连接到一个数据库来做基本的 crud 操作。由于这些操作是重复的,我制作了一个通用的

Service
类,它采用模型和dto作为类型。


import { UserModel, UserModelDTO } from './models';

interface Serviceable {
  doSomething()
}

class Service<M, DTO> implements Serviceable {
  public model: M
  
  constructor(model: M) {
    this.model = model;
  }

  read(): Array<DTO> {}

  doSomething() {}
}

class UserService extends Service<UserModel, UserModelDTO> {}

const userService = new UserService(UserModel)
const records = userService.list()

此时一切正常,我可以声明任意数量的服务,但是在尝试将这些服务连接到控制器后我遇到了困难,因为我再次进行简单的 CRUD 操作我还想定义一个通用控制器,我可以在其中使用任何服务,只要它继承自原始

Service


class GenericController<T extends Service> {
  public service: T;
  
  constructor(service: T) {
    this.service = service;
  }

  read(req, res, next) {
    const records = service.read()
    return records;
  }

}

声明这个之后,编译器告诉我必须满足服务类的泛型类型,但这违背了我想要做的事情的全部目的。

我试着寻找一个例子来做到这一点,所以很可能我在寻找错误的东西或者我在声明中弄错了。

回答如下:

在您的

T extends
类型参数约束中,您还可以将类型参数传递给
Service

class GenericController<M, DTO, T extends Service<M, DTO>> {
    // etc.
}

游乐场链接

更多推荐

Typescript:泛型类又扩展了另一个泛型类

本文发布于:2024-05-30 06:11:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770195.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Typescript   泛型类又   泛型类

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!