serde-ts/dist/de/impl.js
2025-05-19 13:30:11 -05:00

21 lines
890 B
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.deserializeWith = deserializeWith;
const options_1 = require("../options");
const generic_1 = require("./generic");
function deserializeWith(deserializer, into, options) {
const visitor = new generic_1.GenericVisitor();
const target = new into();
const obj = deserializer.deserializeObject(visitor);
const newObject = {};
for (const property in target) {
const name = options.getPropertyName(property, options_1.Stage.Deserialize);
const value = obj[name] || options.getDefault(property);
newObject[property] = value;
delete obj[name];
}
if (options.options.denyUnknownFields && Object.keys(obj).length > 0) {
throw new TypeError(`Unexpected fields: ${Object.keys(obj).join(', ')}`);
}
return Object.assign(target, newObject);
}