对象简化为接口一致性
在 TypeScript 中,接口定义对象属性的契约,而类则实现该接口。然而,通常会遇到具有接口中定义之外的附加属性的对象,这在使用 JSON.stringify() 等将对象转换为 JSON 的工具时可能会带来挑战。
为了解决这个问题,有必要减少一个对象,使其仅包含其实现的接口中的属性。
问题:
尝试使用 JSON.stringify( 将具有附加属性的对象转换为 JSON 时),额外的属性包含在输出中,可能会使 JSON 无效。
解决方案 1:
由于 TypeScript 接口没有运行时表示,因此不能用于强制执行财产限制,需要一种解决方法。通过将接口定义为类,我们可以使用像 Lodash 这样的库从目标对象中仅选取接口中定义的属性。
例如:
<code class="typescript">import _ from 'lodash'; const reducedObj = new MyInterface(); _.assign(reducedObj, _.pick(originalObj, _.keys(reducedObj)));</code>
此方法确保简化的对象仅包含接口中定义的属性。
解决方案 2:
作为另一种方法,可以手动循环目标对象的属性,检查是否每个属性都存在于接口定义中。如果是,则将该属性添加到缩减的对象中。此方法需要小心谨慎,以避免添加意外的属性。
虽然没有直接的方法可以强制强制属性与 JavaScript 中的 TypeScript 接口保持一致,但这些解决方法提供了实用的解决方案来减少对象符合接口定义。
以上是我们如何减少一个对象以符合 TypeScript 中的接口?的详细内容。更多信息请关注PHP中文网其他相关文章!