如何使用正确的流类型扩展 JavaScript 中的错误
How to extend an Error in JavaScript with the correct flowtypes
我正在尝试创建一个自定义错误,它使用正确的流类型 Error
扩展
我正在尝试做的事情的例子:
export class ValidationError extends Error {
/**
* @constructor
* @param {string} message - Error message
* @param {object} inputData - Data that was validated
* @param {object} invalidProperties - Specific properties of `inputData` that are invalid
* @param {object[]} reasons - Reason the `inputData` is invalid
*/
constructor(message, inputData, invalidProperties, reasons) {
super()
this.id = ''
this.name = 'ValidationError'
this.message = message
this.inputData = inputData
this.invalidProperties = invalidProperties
this.reasons = reasons
}
}
类型:
/**
* @constructor
* @param {string} message - Error message
* @param {object} inputData - Data that was validated
* @param {object} invalidProperties - Specific properties of `inputData` that are invalid
* @param {object[]} reasons - Reason the `inputData` is invalid
*/
constructor(
message: string,
inputData: {...},
invalidProperties: {...},
reasons: Array<{...}>
) {
super()
this.id = ''
this.name = 'ValidationError'
this.message = message
this.inputData = inputData
this.invalidProperties = invalidProperties
this.reasons = reasons
}
}
但是流程抱怨额外的属性(id
、inputData
等)。我尝试使用界面,但流程不喜欢 类 和 implement
以及 extend
.
有人成功过吗?
提前致谢,
旦
您需要在分配给它们之前声明这些属性存在,例如
export class ValidationError extends Error {
id: string;
inputData: { ... };
invalidProperties: { ... };
reasons: Array<{ ... }>;
// ...
我正在尝试创建一个自定义错误,它使用正确的流类型 Error
扩展
我正在尝试做的事情的例子:
export class ValidationError extends Error {
/**
* @constructor
* @param {string} message - Error message
* @param {object} inputData - Data that was validated
* @param {object} invalidProperties - Specific properties of `inputData` that are invalid
* @param {object[]} reasons - Reason the `inputData` is invalid
*/
constructor(message, inputData, invalidProperties, reasons) {
super()
this.id = ''
this.name = 'ValidationError'
this.message = message
this.inputData = inputData
this.invalidProperties = invalidProperties
this.reasons = reasons
}
}
类型:
/**
* @constructor
* @param {string} message - Error message
* @param {object} inputData - Data that was validated
* @param {object} invalidProperties - Specific properties of `inputData` that are invalid
* @param {object[]} reasons - Reason the `inputData` is invalid
*/
constructor(
message: string,
inputData: {...},
invalidProperties: {...},
reasons: Array<{...}>
) {
super()
this.id = ''
this.name = 'ValidationError'
this.message = message
this.inputData = inputData
this.invalidProperties = invalidProperties
this.reasons = reasons
}
}
但是流程抱怨额外的属性(id
、inputData
等)。我尝试使用界面,但流程不喜欢 类 和 implement
以及 extend
.
有人成功过吗?
提前致谢,
旦
您需要在分配给它们之前声明这些属性存在,例如
export class ValidationError extends Error {
id: string;
inputData: { ... };
invalidProperties: { ... };
reasons: Array<{ ... }>;
// ...