如何从函数(高阶)返回类?

时间:2020-11-07 09:42:24

标签: typescript

我为一个库编写了声明文件(这给类增加了一些行为),但是我不知道要返回什么类型?

class Model {
  
  prototype: any;

  static find(id: number): number {
    return id;
  }

  save(): boolean {
    return true;
  }
}

function foo<M extends Model>(model: M) { // What type to return ?
  model.prototype.create = function (): void {
    // do something
  };

  model.findAll = function (): number[] { // Error Property 'findAll' does not exist on type 'M'.
    return [1, 2, 3];
  }

  return model;
}
  1. 应该返回什么类型的函数foo? 我已经尝试过了:
class NewModel {
  create(): void;
  static findAll(): number[];
}

function foo<M extends Model>(model: M): NewModel { ... }

但是它期望NewModel的实例,但是我需要该类;

  1. 错误属性'findAll'在类型'M'中不存在。

如果“父”类型上不存在属性,我如何扩展对象?

0 个答案:

没有答案