JS 내장 Proxy로 검증 프록시를 구현하세요. 객체에 값을 set할 때 검증 함수를 통과해야만 반영되고, 실패 시 에러를 던집니다.
export function withValidation<T extends object>(
target: T,
validators: { [K in keyof T]?: (value: T[K]) => boolean | string }
): T;
validators[key]가 정의되어 있으면 set 시 호출true 반환 → 정상 setfalse 반환 → Error('Invalid value for <key>') throwError(<반환된 string>) throwconst user = withValidation(
{ age: 0, name: '' },
{
age: (v) => (v >= 0 ? true : 'age must be >= 0'),
name: (v) => v.length > 0,
}
);
user.age = 30; // OK
user.age = -1; // throws Error('age must be >= 0')
user.name = ''; // throws Error('Invalid value for name')
new Proxy(target, handler)로 set/get/has 등을 가로챔