在转换中转换属性类型

时间:2017-10-02 03:17:43

标签: typescript

我有一个类似于以下内容的原始数据数组,其中包含我想在我的应用程序中使用的相应类型的接口:

const rawData = [
  {
    id: 122314,
    friends: 'A,B,C'
  },
  {
    id: 23342,
    friends: 'B,C'
  },
  {
    id: 412,
    friends: 'B,C'
  },
]

interface DataElement {
 id: number
 friends: string[] 
}

请注意,真实数据集中包含大约15个我想要保留的其他字段。

如何将原始数据转换为类型化数据?到目前为止,我尝试过的所有内容都会导致string不匹配string[]的类型错误,因为朋友的类型显然会发生冲突。

1 个答案:

答案 0 :(得分:0)

有些事情:

 const elts: DataElement[] = rawData.map(d => Object.assign({},d,{friends: d.friends.split(',')}) as DataElement)

Object.assign是为了避免在转换期间改变rawData。如果你不介意,可以更短