reactjs - 'string | undefined' 类型的参数不能分配给 'string' 类型的参数。类型 'undefined' 不可分配给类型 'string'

标签 reactjs typescript

我在 TypeScript 中有一个字典数组,它是这样的:

const dict = [
     { name: "Lorem", prop: "sit" },
     { name: "Ipsum", prop: "amet" },
     { name: "Dolor", prop: "consectetur" }
];
当我尝试通过以下方式动态访问此字典中的对象时:
const handleChange = React.useCallback((eventKey: eventKey) => {
    let property = dict.find(e => e.name === eventKey)?.prop;
    changeProp(property);  //Getting error here
}
请注意,这是动态更改,可以在此处找到演示:https://jsfiddle.net/mdhjfq13/3/
我得到的错误是:
TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  Type 'undefined' is not assignable to type 'string'.
我试过像这样使用它:
let property = dict.find(e => e.name === eventKey);
let name1:string = property.prop!; //Error here
changeProp(name1);
现在得到的错误是:TS2532: Object is possibly 'undefined'.我不知道如何处理这个问题,因为我是 TypeScript 和 React 的新手。

最佳答案

const handleChange = React.useCallback((eventKey: eventKey) => {
    let property = dict.find(e => e.name === eventKey)?.prop;
    changeProp(property);  //Getting error here
}
在这里,在您的函数中,当您在 dict 上查找时,您假设 find 函数可以返回一个空值 dict.find(e => e.name === eventKey)?.prop ,
这样property可能是 undefined | string .
尝试以这种方式更新您的函数 dict.find(e => e.name === eventKey)?.prop || "" ,这意味着如果 find 没有返回任何值,而不是 undefined,则变量 property将是 "" .

关于reactjs - 'string | undefined' 类型的参数不能分配给 'string' 类型的参数。类型 'undefined' 不可分配给类型 'string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66641126/

相关文章:

typescript - defaultRowRenderer 打破了 Jest 单元测试。 ...对象。<匿名> ...导入 createMultiSort

javascript - Angular/JS/Typescript-递归访问对象中的属性

reactjs - React Fragment 导致 Element Type is Invalid Error in Visual Studio 2017

javascript - 无法读取未定义的属性 '#<Object>',在检索 onClick Custom React 之后

javascript - React setState 不会在 ajax 成功时重新渲染

javascript - 无法在 react 映射之外访问返回值

javascript - 如何正确注释作为函数调用结果的导出?

reactjs - 在React Docker容器上的连接被拒绝

angular - 在 Typescript 中连接字符串时换行

html - 映射onclick禁用父div的滚动条