首页  >  文章  >  web前端  >  我们如何减少一个对象以符合 TypeScript 中的接口?

我们如何减少一个对象以符合 TypeScript 中的接口?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 03:58:02617浏览

How can we reduce an object to conform to an interface in TypeScript?

对象简化为接口一致性

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn