capypad
0 Tage Serie
javascript / expert
Snippet

Strukturvalidierung mit Proxy-Traps

Das Proxy-Objekt ermöglicht es, einen Wrapper für ein anderes Objekt zu erstellen, um grundlegende Operationen wie Eigenschaftszuweisungen abzufangen. Durch die Verwendung des 'set'-Traps und der 'Reflect'-API kann eine robuste Laufzeit-Typprüfung implementiert werden.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
const schema = { name: 'string', age: 'number' };
const handler = {
set(target, prop, value) {
if (schema[prop] && typeof value !== schema[prop]) {
throw new TypeError(`Invalid type for ${prop}`);
}
return Reflect.set(...arguments);
}
};
 
const user = new Proxy({}, handler);
user.name = 'Alice'; // Works
user.age = 'none'; // Throws TypeError
Erklärung
1
set(target, prop, value)
Ein Trap für das Setzen von Eigenschaftswerten auf dem Proxy-Objekt.
2
Reflect.set(...arguments)
Standardmethode, um die Standardaktion der Wertzuweisung an eine Eigenschaft auszuführen.
3
new Proxy({}, handler)
Konstruiert einen Proxy, der den definierten Handler verwendet, um Operationen abzufangen.