如何在打字稿中的函数参数中添加默认值?

Nor*_*yan 3 javascript types typescript

我试图在我的函数中添加最后一个类型,但是无论我做什么,打字稿都会抱怨。我知道有办法解决这个问题,需要你的帮助。

export const getPropertiesArray = <T extends object, K extends keyof T>(data: T[], property: K) => {
    return data.map(item => item[property]).sort();
};
Run Code Online (Sandbox Code Playgroud)

这是我的函数,我需要添加一个默认值property,在本例中,默认值是“ID”。

Sim*_*aud 5

传递默认“ID”不可分配给 的约束object
事实上,您应该假设 ID 始终是您对象的键。

这是一个解决方法:

// T extends { ID: any } - You may replace any by your ID type
export const getPropertiesArray = <T extends { ID: any }>(
  data: T[],
  property: keyof T = 'ID'
) => {
  return data.map(item => item[property]).sort()
}

Run Code Online (Sandbox Code Playgroud)