我有 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 许可协议
您正在比较用户
.username
,这是可选的,这意味着它的类型string | undefined
与数组中的每个string
项目,–you can change the type of your array to:
arrayData: Array<Array<string|undefined>>
or you can just useas
to treat it as astring
, notstring|undefined
:即:list.includes(user.username as string)