【发布时间】:2015-12-10 12:06:04
【问题描述】:
我需要在 TypeScript 中深度克隆一个对象。这应该不是问题,因为像 Lodash 这样的库为此提供了适当的功能。但是,这些似乎丢弃了类型信息。
> var a = new SomeClass();
> a instanceof SomeClass;
< true
> var b = _.cloneDeep(a);
> b instanceof SomeClass;
< false
有没有办法在 TypeScript 中克隆对象,同时保留这些输入信息?
【问题讨论】:
-
类似
b: typeof a? -
自动?不,您需要在对象及其嵌套对象上实现克隆方法。
-
保留 Typescript 类型和保留 SomeClass.prototype 不是一回事。请参阅@Retsam 答案和developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。 Typescript 类型在运行时被删除。
-
@BrunoGrieder 很好地链接了 MDN 文档的实例;我已将其编辑到我的答案中。
-
我今天(2019 年 11 月)使用 lodash 4.17.15 运行相同的测试,似乎测试成功,即 instanceof 在两种情况下都返回 true。这期间有什么变化吗?
标签: javascript typescript lodash