3 个回答

JSON.parse的返回值是any类型,编译器无法知道具体是什么类型,但你可以指定。比如

const person2=JSON.parse(JSON.stringify(person)) as IPerson;

我错了,parse后原来类型真的丢失了。。。忽略下面的回答吧


可以编译通过是因为你的编译配置忽略了类型检查,不代表stringify之后ts就检测不了类型了,你的截图里面的代码的红色波浪线看到了吗,其实那个就是ts的类型检测提示了,你鼠标移动到波浪线就能看到错误提示消息了

JSON.parse返回的就是any。

如果你是普通的Object对应上interface,可能问题不大。

但是如果是你stringfy时候,传入的是自定义的class,序列化时候,会丢失掉原型链信息。就算你后面强制类型断言,实际上parse出来的对象也不是你断言的对象,可能会出问题的。

你这个例子里的几个person,如果你是用类去实现该接口,或者你的类还有继承关系,出的问题就大了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题