我真的不知道如何捕获错误。有人可以帮我吗?
如果您有更好的解决方案(如果看起来更好,那也很好)
interface Props {
prevCases: Array<Case>
}
export function MyFunction(props) {
const { prevCases } = this.props;
const myType = prevCases << Object is possibly 'undefined'.
.find((case: Case) => case?.id === myId).resultItems
?.find((item: Item) => item.name === myPath)
?.type;
console.log(ArrayA[myType]); << Type 'undefined' cannot be used as an index type.
...
答案 0 :(得分:1)
尝试使用简化/可读的代码,以便读者理解。 第一个问题是您无法编写this.prop,它会寻找全局变量,仅用prop代替。 通过使用try catch块调试进一步的问题
interface Props {
prevCases: any[]
}
let myId = 1;
let myPath = 'abc';
function MyFunction(props : any[]) {
try {
const myType = props.filter(prop => prop ? prop['id'] === myId : false)
.filter(prop => prop ? prop['name'] === myPath : false);
myType.forEach(item => console.log(item['value']));
}
catch(Error){
console.log(Error.message);
}
}
MyFunction([null,{'id':2,'name':'abc','value':'b'},{'id':1,'name':'abc','value':'c'}]);
答案 1 :(得分:0)
使用对象分解时,属性值可能为undefined
:
const { prevCases } = this.props;
与以下相同:
const prevCases = this.props.prevCases;
并且Typescript不知道props
的类型,因此不知道属性prevCases
存在,您需要明确地告诉Typescript props
参数是输入Props
。为此,您需要这样在函数声明中声明类型:
export function MyFunction(props: Props) {
// Your function body
}
这样,无论发生什么情况,都将使用Typescript,props
参数将始终为Props
类型