我有这个界面
export interface IUser {
name?: string;
email?: string;
state?: number;
}
我收到了这个物体
const payload = {
name: 'name1',
surename: 'surename1'
};
我需要拒绝这个有效负载,如果它包含IUser接口中未包含的某些属性,例如本例中的surename
答案 0 :(得分:1)
制作一个允许属性的数组,然后检查.some
对象属性之一是否不在该数组中:
const permittedProperties = ['name', 'email', 'state'];
// ...
if (Object.keys(payload).some(key => !permittedProperties.includes(key))) {
throw new Error('Invalid property found');
}
如果该对象可能还需要验证其内部原型上的属性,则还必须递归地迭代每个原型对象。
如果要验证是否也没有禁止的不可枚举属性,请使用Object.getOwnPropertyNames
(检索所有自己的属性)而不是Object.keys
(仅检索自己的可枚举属性)。