import type { Result } from '../../../mod.js'; import type { ErrorLevel } from '../anyError/mod.js'; import { AnyError } from '../anyError/mod.js'; /** ## `ErrorMachine` 用于快速生成一个标准`AnyError` @example Usage ```ts @ErrorMachine('PermissionError', 'Info', 'def - PermissionError') class PermissionError extends AnyErrorMachine<'Info'> {} const is = PermissionError.err('我就想生成装饰器').unwrap_err().instance_of(PermissionError) assert(is) const perror_jsonx = SerdeJSON.serialize(PermissionError.new('permission_error')) const permission_error = SerdeJSON.deserialize(perror_jsonx).unwrap() assert(permission_error.instance_of(PermissionError)) assert(!permission_error.instance_of(NaNError)) ``` @ruls 0. 使用本装饰器会自动注册一个SerdeJSON自定义转化类,不需要手动注册 1. 装饰器的装饰的类必须为空类,因为装饰器会直接替换原有的类 2. 装饰器会生成一个新的类,这个类继承自`AnyError`类,想要获得正确的类型提示,修饰类需要`extends`{@link AnyErrorMachine} @type `ClassDecorator` */ export declare function ErrorMachine(name: string, level: ErrorLevel, defcasue: string): ClassDecorator; /** ### `AnyErroMachine` : 使用`ErrorMachine`装饰器生成的类的类型 - 只用于类型提示,没有实际用途 */ export declare class AnyErrorMachine extends AnyError { constructor(cause?: string); static new>(this: T, cause?: string, level?: R): InstanceType; static err(this: T, cause?: string, level?: R): Result>; } //# sourceMappingURL=error.d.ts.map