打字稿:如何在列表上进行映射时进行类型检查

时间:2018-10-10 08:54:26

标签: typescript typescript2.9

Im使用打字稿2.9.1。我的问题的示例:

type MyType = {
  replaceThisProp: string
}

const instance:MyType = {
  replaceThisProp: 'hello',
}

const instanceList:MyType[] = [instance]

// Misspelling the property here causes an error:
const updatedInstance:MyType = {
    ...instance,
    replaceThisPropp:'Oops'
}

// But here no error is given:
const result: MyType[] = instanceList.map<MyType>(h =>({
  ...h,
  replaceThisPropp:'Oops'
}))

我知道Typescript无法确定类型,因为它是在回调函数中返回的。但是获得良好的类型检查的最冗长的方法是什么?

1 个答案:

答案 0 :(得分:2)

[].map旨在允许您更改类型,因此不知道您的意图是返回MyType。你可以告诉它:

const result = instanceList.map((h): MyType =>({
  ...h,
  replaceThisPropp:'Oops' // now errors.
}))