在Typescript中映射时动态地将属性指定给类型化对象数组

在Typescript中映射时动态地将属性指定给类型化对象数组,typescript,Typescript,这有一个错误: interface TypeA { prop1: string } interface TypeB extends TypeA { prop2: string } const ArrA: TypeA[] = [{ prop1: "foo" }] const ArrB: TypeB[] = ArrA.map(a => { a.prop2 = "bar" return a }) 这将获取错误:[ts]属性“prop2”在类型“TypeA”上不存在 我不想在接口

这有一个错误:

interface TypeA {
  prop1: string
}
interface TypeB extends TypeA {
  prop2: string
}
const ArrA: TypeA[] = [{ prop1: "foo" }]
const ArrB: TypeB[] = ArrA.map(a => {
  a.prop2 = "bar"
  return a
})
这将获取错误:[ts]属性“prop2”在类型“TypeA”上不存在

我不想在接口定义中使用任何函数。我在Stackoverflow上找不到任何其他解决方案,所以我在这里提出这个问题。

我需要使用as关键字进行强制转换,并在TypeA上添加prop2作为可选参数:

这是我能找到的最好的解决方案,我希望有更多惯用的解决方案,1不涉及修改TypeA,2不涉及使用任何。谢谢。

这个怎么样:

const ArrB: TypeB[] = ArrA.map(a => {
  return {
    ...a,
    prop2: "bar"
  }
})
const ArrB: TypeB[] = ArrA.map(a => {
  return {
    ...a,
    prop2: "bar"
  }
})