awesome-typescript icon indicating copy to clipboard operation
awesome-typescript copied to clipboard

第一题

Open sansan-mei opened this issue 3 years ago • 0 comments
trafficstars

因为t并不等于User,t是User的子类,所以t可能会有更多的属性,而这只是返回了User,可以这样修改👇

type User = {
  id: number;
  kind: string;
};
function makeCustomer<T extends User>(u: T):User  {
  return {
    id: u.id,
    kind: 'customer'
  }
}

function makeCustomer<T extends User>(u: T):T  {
  return {
    ...u,// 这里u拥有T的全部属性,返回T的扩展也是可以的
    id: u.id,
    kind: 'customer'
  }
}


sansan-mei avatar Feb 20 '22 09:02 sansan-mei