Мне интересно, есть ли простой способ проверки формы объекта в Javascript.
Сейчас у меня есть функция, которая проверяет форму объектов конечной точки, например:
function validateEndpointShape(endpoint: any, hasId: boolean): boolean
{
return endpoint
&& (hasId ? typeof endpoint.id === 'string' : true)
&& typeof endpoint.name === 'string'
&& typeof endpoint.description === 'string'
&& typeof endpoint.url === 'string'
&& GenericApiEndpointMethods[endpoint.method] !== undefined
&& ApiEndpointTypes[endpoint.apiEndpointType] !== undefined
&& endpoint.group
&& typeof endpoint.group.groupPublicKey === 'string'
&& typeof endpoint.group.groupName === 'string'
&& typeof endpoint.reason === 'string'
&& typeof endpoint.isPublic === 'boolean'
&& typeof endpoint.isActive === 'boolean'
&& authTypes[endpoint.authType] !== undefined
&& Array.isArray(endpoint.parameters)
&& Array.isArray(endpoint.headers);
}
Это может быть громоздким и громоздким.И я не хочу делать это для каждого объекта, который я создаю.
Когда конечная точка входит в нашу функцию облачной пожарной базы, мы должны выполнить несколько проверок, чтобы мы знали, когда следует отклонитьплохие данные.Форма конечной точки является одной из таких проверок.
Я пытался сделать это:
Delete req.body.reason;
req.body[‘extraField’] = ‘xxx’;
Const endpoint: GenericApiEndpoint = req.body;
console.log(‘endpoint =‘, endpoint);
Но Javascript это не волнует.Он будет принимать конечную точку без причины (обязательное поле) и с extraField (несуществующее поле в модели) и назначит ее объекту, типизированному как GenericApiEndpoint.Конечная точка печатается без причины и с помощью extraField.
Я также пытался:
Const endpoint = <GenericApiEndpoint>req.body;
… но Javascript также не заботится об этом.
Кто-нибудь знает опростой способ проверить форму объектов в Javascript?