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

undefined not assignable issue in Typescript

我有一个接口员工:

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 函数来 return 数组的最终值。我该如何解决这个问题?

谢谢

emp.data? 中的

? 表示 data 是可选的,可能不存在于 emp 中,它告诉打字稿不要通过链式函数,即 map.所以你的赋值可以returnundefined或者Employee[],不能赋值给allEmployees.

因为emp.data?也可能returnsvoid 0。这就是为什么您不必使用 proposal-optional-chaining,只需像下面这样检查:

allEmployees = emp.data ? emp.data.map((employee) => {
  return { firstName: employee.firstName, lastName: employee.lastName }
}) : [];