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接口更容易扩展,等等。你也可以在超级调用中设置类型、消息和代码,我错过了,更新了答案。你能用这些改进编辑答案吗,这样我可以试着更好地理解?如果可能的话,我会非常感激你能编辑一下你所说的接口和扩展是什么样子的吗?