将 JavaScript 对象简化为接口属性
在 TypeScript 中,接口充当数据结构的蓝图。但是,在运行时,接口是空的,因此无法直接将对象简化为仅包含其中定义的属性。
实现
但是,有几种解决方法方法:
使用Class
将接口定义为类:
class MyInterface { test: string = undefined; }
然后,使用 Lodash 提取所需的属性:
import _ from "lodash"; const before = { test: "hello", newTest: "world" }; let reduced = new MyInterface(); _.assign(reduced, _.pick(before, _.keys(reduced))); console.log("reduced", reduced); // contains only "test" property
Assebly运算符
或者,您也可以使用程序集运算符:
let reduced = {...new MyInterface(), ...test};
这会将空的“MyInterface”对象与“test”对象合并,覆盖任何重复的属性。
为什么使用此方法?
当使用 Angular 的“toJson”方法将数据发送到 REST 服务时,此方法非常有用。 “newTest”属性虽然在编译期间无法访问,但会被“toJson”转换,导致 REST 服务因属性无效而拒绝 JSON。通过将对象简化为接口属性,仅发送预期的数据,确保与服务的正确通信。
以上是如何将 JavaScript 对象简化为 TypeScript 中的接口属性?的详细内容。更多信息请关注PHP中文网其他相关文章!