猿问

打字稿中未定义的不可分配问题

我有一个接口员工:


export interface Employee {

  firstName: string;

  lastName: string;

}

我正在尝试将 Employee 类型的元素推入数组,如下所示:


  let allEmployees: Employee[] = [];

  allEmployees = emp.data?.map((employee) => {

    return { firstName: employee.firstName, lastName: employee.lastName }

  });

我收到以下打字稿编译时错误:


type 'undefined' is not assignable to type 'Employee[]'

我使用 .map 函数返回数组的最终值。我该如何解决这个问题?


慕后森
浏览 68回答 2
2回答

慕森王

?in emp.data?meansdata是可选的,可能不存在于 中emp,它告诉 typescript 不要通过链式函数,即map. 所以你的赋值可以返回undefinedor Employee[],它不能赋值给allEmployees。

慕盖茨4494581

这是因为也emp.data?可能返回。void 0这就是为什么您不必使用proposal-optional-chaining,只需像下面这样检查:allEmployees = emp.data ? emp.data.map((employee) => {  return { firstName: employee.firstName, lastName: employee.lastName }}) : [];
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答