打字稿:'string \| 类型的参数undefined' 不可分配给 'string' 类型的参数

新手上路,请多包涵

我有 nestet 数组列表的列表,我正在尝试基于数组值的 fiter。当我过滤时出现错误。我正在使用带有 eslint 的打字稿。

 Argument of type 'string | undefined' is not assignable to parameter of type 'string'

但是我检查了 null/undefined 值,但仍然出现错误。

 interface User {
  id: string;
  username?: string;
}

function getList (user:User){
  if(user.username === undefined){
    return {};
  }
  let arrayData: string[][] = [];
  arrayData = [["abcd"],["efgh"],["xyz"],["abcd","xyz"]];
 //here i have differnt logic
  const filterData = arrayData.filter(list => list.includes(user.username));
  return filterData;
}

getList({id: "123", username: "xyz"});

当我使用 non-null assertion operator 时,错误已解决但出现 lint 问题。

 const filterData = arrayData.filter(list => list.includes(user.username!));

谁能帮我解决这个问题。

原文由 RSKMR 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 641
1 个回答

您正在比较用户 .username ,这是可选的,这意味着它的类型 string | undefined 与数组中的每个 string 项目,–

you can change the type of your array to: arrayData: Array<Array<string|undefined>> or you can just use as to treat it as a string , not string|undefined :即: list.includes(user.username as string)

原文由 Zac 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题