![](/img/trans.png)
[英]Argument of type 'string | undefined' is not assignable to parameter of type 'string'. typescript 'strict'
[英]Typescript: Argument of type 'string | undefined' is not assignable to parameter of type 'string'
我有嵌套數組列表的列表,我正在嘗試基於數組值的 fiter。 當我過濾得到錯誤時。 我正在將 typescript 與 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!));
誰能幫我解決這個問題。
您正在比較 User .username
,這是可選的,這意味着它的類型是string | undefined
string | undefined
到數組中的每個string
項,
您可以將數組的類型更改為: arrayData: Array<Array<string|undefined>>
或者您可以只使用as
將其視為string
,而不是string|undefined
:即: list.includes(user.username as string)
您可以像這樣聲明用戶名:
username?: string | undefined;
當你想設置一個已經有類型的變量時 | 未定義,並且 setter 不接受任何類型 | 未定義,您可以在變量末尾使用:,例如:
對於像你這樣的界面
interface User { id: int; username?: string }
有一個變量
let userVariable = 'Terminator3000'
你可以做
user: User = { id: 123, username: userVariable! }
! 運算符指示該值不是未定義的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.