Typescript类和多个子类、类型和接口

Typescript类和多个子类、类型和接口,typescript,Typescript,您好,我有一个基类,还有其他扩展这个基类的类: 类型和接口: export type fooBar = { foo: string; bar: string; }; /*UnprocessableEntityError */ export type missing_fields_error = { field: string; code: string; }; /*Default Errors */ export type DefaultErrors = { type?: s

您好,我有一个基类,还有其他扩展这个基类的类:

类型和接口

export type fooBar = {
  foo: string;
  bar: string;
};
/*UnprocessableEntityError */
export type missing_fields_error = {
  field: string;
  code: string;
};
/*Default Errors */
export type DefaultErrors = {
  type?: string;
  message?: string;
  code?: number;
  errors?: missing_fields_error[] | fooBar[];
  internalData?: object;
  options?: {
    showPath?: boolean;
    showLocations?: boolean;
  };
};
基类:

export class BaseError extends ExtendableError implements DefaultErrors {
  type: string;
  message: string;
  code: number;
  errors?: missing_fields_error[] | fooBar[];
  internalData: object;
  path: any;
  locations: any;
  _showLocations: boolean = false;
  _showPath: boolean = false;

  constructor(args: DefaultErrors) {
    super(args.message || '');
    const type = args.type;
    const message = args.message;
    const code = args.code;
    const internalData = args.internalData;
    const options = args.options;

    this.type = type;
    this.message = message;
    this.code = code;
    this.internalData = internalData;
    this._showLocations = !options.showLocations;
    this._showPath = !options.showPath;
  }

  serialize(): DefaultErrors {
    const { type, message, code, errors } = this;

    let error: DefaultErrors = {
      type,
      message,
      code,
    };

    return error;
  }
}
子类:

/* Unprocessable Entity Error */
export class UnprocessableEntityERROR extends BaseError {
  constructor(errors: missing_fields_error[]) {
    super();
    this.type = 'Unprocessable Entity';
    this.message = 'Validation Failed';
    this.code = 422;
  }
}
但是我在我的super()上犯了这个错误

ts(41,15):未提供“args”的参数

基本上,我有一个带有默认数据的类和其他使用这些默认数据的类,并且有更多的属性/类型/接口
我不知道我是否有正确的逻辑,如果有人能在您使用
super()
调用
BaseError
s构造函数时给我一点提示,您没有指定错误,基本上将构造函数更改为类似以下内容:

/* Unprocessable Entity Error */
export class UnprocessableEntityERROR extends BaseError {
  constructor(errors: missing_fields_error[]) {
    super({
      type: 'Unprocessable Entity',
      message: 'Validation Failed',
      code: 422,
      errors
    });
  }
}
接口(详情见注释):


在使用
super()
调用
BaseError
s构造函数时,您没有指定错误,基本上将构造函数更改为类似以下内容:

/* Unprocessable Entity Error */
export class UnprocessableEntityERROR extends BaseError {
  constructor(errors: missing_fields_error[]) {
    super({
      type: 'Unprocessable Entity',
      message: 'Validation Failed',
      code: 422,
      errors
    });
  }
}
接口(详情见注释):


BaseError构造函数接受一个args参数,您在super()调用中没有指定该参数

可以为args参数指定默认值来解决此问题

constructor(args: DefaultErrors = ‘’) 

BaseError构造函数接受一个args参数,您在super()调用中没有指定该参数

可以为args参数指定默认值来解决此问题

constructor(args: DefaultErrors = ‘’) 

我想我明白了,你相信我这样做是正确的吗?有没有办法使代码更小/maxizedIt肯定可以改进,特别是你的基类有type、message和code属性,但也有internalData子类的hold的type、message和code,是否有意要有两套?我会给你一个console.log内部游戏的内部数据,你能帮我提高吗?我想我明白了,你相信我这样做是正确的吗?有没有办法使代码更小/maxizedIt肯定可以改进,特别是你的基类有type、message和code属性,但也有internalData子类的hold的type、message和code,是否有意要有两套?我会给你一个console.log内部游戏的内部数据,你能帮我提高吗?我想我明白了,你相信我这样做是正确的吗?有没有办法使代码更小/最大化我会做的一些事情是使你的
类型
s接口更容易扩展,等等。你也可以在超级调用中设置类型、消息和代码,我错过了,更新了答案。你能用这些改进编辑答案吗,这样我可以试着更好地理解?如果可能的话,我会非常感激你能编辑一下你所说的接口和扩展的样子吗?我想我明白了,你相信我这样做是正确的吗?有没有办法使代码更小/最大化我会做的一些事情是使你的
类型
s接口更容易扩展,等等。你也可以在超级调用中设置类型、消息和代码,我错过了,更新了答案。你能用这些改进编辑答案吗,这样我可以试着更好地理解?如果可能的话,我会非常感激你能编辑一下你所说的接口和扩展是什么样子的吗?