我试图在函数中添加最后一个类型,但是打字稿抱怨我所做的一切。我知道有一种解决方法,需要您的帮助。
export const getPropertiesArray = <T extends object, K extends keyof T>(data: T[], property: K) => {
return data.map(item => item[property]).sort();
};
这是我的功能,我需要向property
添加一个默认值,在这种情况下,默认值为“ ID”。
答案 0 :(得分:3)
不能将传递默认的“ 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();
};
答案 1 :(得分:0)
总体上 ,上述问题的答案很简单-默认参数的格式为myParam = "default value"
,例如
function myFunc(param1 = "default value") {
//...
}
您可以在以下位置的Typescript中阅读有关默认参数的更多信息:https://www.typescriptlang.org/docs/handbook/functions.html#optional-and-default-parameters
如何: :OP的特定情况涉及keyof
parameter,这需要特殊处理。参见Simon Bruneaud's answer。