取两个基类

interface Entity {}
interface Model {
  toEntity(): Entity;
}

我需要创建一个方法,该方法接受Model的派生类,并将其转换为保留泛型类的实体

function convert<T extends Model, J extends T['toEntity']>(model: T) { 
  return model.toEntity();
}

然而,这就产生了

Type Entity is not assignable to type J. J could be instantiated with an arbitrary type which could be unrelated to Entity

推荐答案

我假设您希望Entity?playground对模型进行参数化

interface Model<Entity> {
  toEntity(): Entity;
}

function convert<Entity>(model: Model<Entity>): Entity {
    return model.toEntity();
}

Typescript相关问答推荐

VS代码1.88.0中未出现自动导入建议

TS不推断类型在条件判断后具有属性'

TypeScript将键传递给新对象错误

基于键的值的打字动态类型;种类;

如何提取密钥及其对应的属性类型,以供在新类型中使用?

如何使默认导出与CommonJS兼容

MatTool提示在角垫工作台中不起作用

为什么我的查询钩子返回的结果与浏览器的网络选项卡中看到的结果不同?

在VSCode中显示eslint错误,但在终端中运行eslint命令时不显示?(Vite,React,TypeScript)

APP_INITIALIZER在继续到其他Provider 之前未解析promise

TypeScrip:如何缩小具有联合类型属性的对象

扩展对象的此内容(&Q;)

三重融合视角与正交阵

将类型脚本函数返回类型提取到VSCode中的接口

有没有什么方法可以使用ProvideState()提供多个削减器作为根减减器

如何使用IsEqual创建断言类型相等的实用程序

Typescript 是否可以区分泛型参数 void?

如何强制对象数组中的对象属性具有非空字符串值?

使用 Next.js 路由重定向到原始 URL 不起作用

组件的第二个实例使用 svelte 中第一个实例上设置的函数