《JSON.parse的返回值没有类型》

1,333 阅读1分钟
function clone<T>(data: T): T{
    return JSON.parse(JSON.stringify(data))
}

export default clone

对于数组,对象这类数据类型,有时我们需要克隆另外一个相同的数据,但是地址不一样。为了不改变原来的对象。

可以先序列化,再反序列化,就得到了和原来内容一样,但地址不同的对象。

但是JSON.parse的返回值是any类型的,有时我们还需要对这个返回值做一些操作,ts就不知道它是什么类型了。

所以我们可以指定,传进去的数据是什么类型,克隆之后的返回值就是什么类型。比如T,然后ts会说不知道T在哪里声明了。所以用一个<>声明一下,再使用。

然后在调用clone函数的时候,传进去的参数要指明类型。这样克隆完的就还是一样的类型。