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

时间:2020-05-06 16:37:11

标签: javascript typescript types

我试图在函数中添加最后一个类型,但是打字稿抱怨我所做的一切。我知道有一种解决方法,需要您的帮助。

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

这是我的功能,我需要向property添加一个默认值,在这种情况下,默认值为“ ID”。

2 个答案:

答案 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