Ich mag würde Dekorateure verwenden, um meine Instanzen zu bestätigen:ES/TS decoractors zum Beispiel Validierung
function min(minVal) {
return (target, key) => {
let value = target[key];
const getter =() => value;
const setter = (val) => {
if (val < minVal) {
throw new Error(`Value smaller than ${minVal}`);
}
value = val;
}
Reflect.deleteProperty[key];
Reflect.defineProperty(target, key, {
get: getter,
set: setter
});
}
}
function max, String, Number ...
class User {
@String
name: String
@Number
@max(100)
@min(0)
age: Number
static validate(obj) {
???
}
}
Dies funktioniert, wenn ich die Instanz direkt verwenden, aber ich möchte in der Lage sein, die Validate-Methode aufrufen und passiert in einem einfachen Objekt:
User.validate({ name: 'Jon', age: 23}) // ok
User.validate({ name: 'Jon', age: -5}) // error
gibt es eine Möglichkeit, die Dekorateure auf das übergebene Objekt anzuwenden, ohne eine Benutzerinstanz?