簡體   English   中英

Typescript:類型參數'string | undefined' 不能分配給“string”類型的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM