Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Typescript此表达式不可构造。继承的类结构出错_Javascript_Typescript_Oop - Fatal编程技术网

Javascript Typescript此表达式不可构造。继承的类结构出错

Javascript Typescript此表达式不可构造。继承的类结构出错,javascript,typescript,oop,Javascript,Typescript,Oop,我是Typescript新手,我正在尝试在应用程序中个性化我的错误类 我一共有四节课异常,一般错误,基本服务,CarService两个主服务和两个继承服务一般错误扩展例外类和车载服务扩展基本服务。我无法更改GenericError类的构造函数属性。我得到了这个错误 此表达式不可构造 我的类继承逻辑有什么问题 // Exception.ts class ExceptionClass extends Error { status: number; message: string; er

我是Typescript新手,我正在尝试在应用程序中个性化我的错误类

我一共有四节课异常一般错误基本服务CarService两个主服务和两个继承服务一般错误扩展例外类车载服务扩展基本服务。我无法更改GenericError类的构造函数属性。我得到了这个错误

此表达式不可构造

我的类继承逻辑有什么问题

// Exception.ts
class ExceptionClass extends Error {
  status: number;
  message: string;
  errors?: object;
  constructor(status: number, message: string, errors?: object) {
    super(message);
    this.status = status;
    this.message = message;
    this.errors = errors;
  }
}

问题在于,在以下行中:

const passwordsNotMatchErr = new this.genericError('Fail Reason bla bla');
您正在尝试创建已在类的构造函数中实例化的变量的实例。您正在尝试执行类似于
constmystring=new的操作“我是一个字符串,无法实例化”

当您这样做时:

genericError: GenericException;
您要做的是定义一个属于
GenericExpection
类型的类变量(请记住,只能实例化类,不能实例化变量)。如果您想遵循您的体系结构,您可以执行以下操作:

  async checkCar() {
    return new Promise(async (resolve: any, reject: any) => {
      //** Imagine some business logic that fails */
      this.genericError = new GenericException('Fail Reason bla bla');
      return reject(this.genericError);
    })
  }


问题在于,在以下行中:

const passwordsNotMatchErr = new this.genericError('Fail Reason bla bla');
您正在尝试创建已在类的构造函数中实例化的变量的实例。您正在尝试执行类似于
constmystring=new的操作“我是一个字符串,无法实例化”

当您这样做时:

genericError: GenericException;
您要做的是定义一个属于
GenericExpection
类型的类变量(请记住,只能实例化类,不能实例化变量)。如果您想遵循您的体系结构,您可以执行以下操作:

  async checkCar() {
    return new Promise(async (resolve: any, reject: any) => {
      //** Imagine some business logic that fails */
      this.genericError = new GenericException('Fail Reason bla bla');
      return reject(this.genericError);
    })
  }


只是一个提示,将一个函数标记为异步,然后返回一个承诺是没有意义的。只是一个提示,将一个函数标记为异步,然后返回一个承诺是没有意义的。谢谢你的回答。我知道我可以导入服务文件顶部的GenericeException类,并按照您的建议使用它。但我认为你没有抓住我的重点。我试图在类中收集所有异常,我想在扩展类中使用它们。。如果我按照你的建议做的话,我必须在每个文件中导入GenericeException类,不是吗?我知道你想做什么了。。。在
BaseService
类中创建一个助手方法,返回
GenericException
的新实例,怎么样?这只需要在
BaseService
类上导入
GenericException
,并与helper方法交互即可。如果这不合理,请告诉我,我可以用@CapanThanks示例更新我的答案。我知道我可以导入服务文件顶部的GenericeException类,并按照您的建议使用它。但我认为你没有抓住我的重点。我试图在类中收集所有异常,我想在扩展类中使用它们。。如果我按照你的建议做的话,我必须在每个文件中导入GenericeException类,不是吗?我知道你想做什么了。。。在
BaseService
类中创建一个助手方法,返回
GenericException
的新实例,怎么样?这只需要在
BaseService
类上导入
GenericException
,并与helper方法交互即可。如果这不合理,请告诉我,我可以用@Capan的例子更新我的答案
  async checkCar() {
    return new Promise(async (resolve: any, reject: any) => {
      //** Imagine some business logic that fails */
      const passwordsNotMatchErr = new GenericException('Fail Reason bla bla');
      return reject(passwordsNotMatchErr);
    })
  }