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无法确定类型,因为它是在回调函数中返回的。但是获得良好的类型检查的最冗长的方法是什么?
答案 0 :(得分:2)
[].map
旨在允许您更改类型,因此不知道您的意图是返回MyType
。你可以告诉它:
const result = instanceList.map((h): MyType =>({
...h,
replaceThisPropp:'Oops' // now errors.
}))