在方法buildErrorMessage
中,参数errorType
的值必须是ErrorMessagesBuilder.ERROR_TYPES
值的某个值。当然,如果在类之外定义类型别名或类似的名称,则可以解决此问题。是否有更优雅的解决方案,完全封装在ErrorMessagesBuilder
中?
export default class ErrorMessagesBuilder {
public static ERROR_TYPES: {[propertyName: string]: string} = {
REQUIRED_PARAMETER_ABSENCE: 'Required parameter absence',
INVALID_PARAMETER_VALUE: 'Invalid parameter value',
INVALID_PARAMETER_TYPE: 'Invalid parameter type',
INVALID_VALUE: 'Invalid parameter value',
IMPROPER_USAGE: 'Improper usage'
};
public static buildErrorMessage(
{
methodCallingExpression,
errorType,
description,
possibleCauses,
recommendedChecklist
} : {
methodCallingExpression: string,
errorType: /* On of ErrorMessagesBuilder.ERROR_TYPES */,
description: string,
possibleCauses?: string | Array<string>,
recommendedChecklist?: string | Array<string>
}): string
{
// ...
}
}
答案 0 :(得分:1)
您可以在类外部声明枚举,并使用静态成员将其公开。希望这适合您的用例。否则,我看不到解决您的问题的更好方法。
enum ERROR_TYPES {
REQUIRED_PARAMETER_ABSENCE = "Required parameter absence",
INVALID_PARAMETER_VALUE = "Invalid parameter value",
INVALID_PARAMETER_TYPE = "Invalid parameter type",
INVALID_VALUE = "Invalid parameter value",
IMPROPER_USAGE = "Improper usage",
}
export default class ErrorMessagesBuilder {
public static ERROR_TYPES = ERROR_TYPES;
public static buildErrorMessage({
methodCallingExpression,
errorType,
description,
possibleCauses,
recommendedChecklist,
}: {
methodCallingExpression: string;
errorType: ERROR_TYPES;
description: string;
possibleCauses?: string | Array<string>;
recommendedChecklist?: string | Array<string>;
}): void {
// ...
}
}