首页 > 解决方案 > 打字稿如何做嵌套的泛型类型

问题描述

我正在尝试实现以下目标:

type GenericPerson = {
  name: string;
};

type GenericCompany<X extends GenericPerson> = {
  companyName: string;
  employees: X[];
};

const getEmployeeDetails = <T extends GenericPerson, Company extends GenericCompany<T>>(company: Company): T[] => {
  return company.employees;
};

鉴于没有编译器警告,我假设getEmployeeDetails确实会返回一个T. 但是,当我尝试以下操作时:

const companyA = {
  companyName: 'XYZ',
  employees: [
    {
      name: 'John',
      address: 'London',
    },
    {
      name: 'David',
      address: 'New York',
    },
  ],
};

getEmployeeDetails(companyA).map((x) => {
  console.log(x.address);
});

它根本不起作用,令人惊讶getEmployeeDetails的是返回类型为GenericPerson[]

有人可以帮我解决我做错了什么吗?我怎样才能达到预期的结果

谢谢

标签: typescriptgenerics

解决方案


推荐阅读