Reputation: 6970
I have a function with some default values, when I try to call the function and since it has some defaults so I do not need to pass in any values for defaults for example
function myFunc(
{
str1,
str2,
timeout = 3000,
} : {
str1: string,
str2: string,
timeout: number,
}
): Promise<any | undefined> {
// some logics here
}
await myFunc({
str1: 'string 1',
str2: 'string 2'
})
I get an error such as
Property 'timeout' is missing in type '{ str1: string; str2: string; timeout: number;}'
How can I resolve this since there is a default value declared, I shouldn't have to pass in the property if I don't need to override the default isn't it?
Thanks in advance for any help and suggestions.
Upvotes: 0
Views: 1423
Reputation: 370609
This section is only JavaScript syntax:
function myFunc(
{
str1,
str2,
timeout = 3000,
}
which will assign a value of 3000 if that parameter is undefined. You also need to indicate to TypeScript what the type of the parameter should be, and this:
{
str1: string,
str2: string,
timeout: number,
}
requires timeout
to be a property.
If you want it to be optional, note that in the TypeScript type as well, in addition to using the default value for the (emitted) JavaScript.
function myFunc(
{
str1,
str2,
timeout = 3000,
} : {
str1: string,
str2: string,
timeout?: number,
}
): Promise<any | undefined> {
// some logics here
}
Upvotes: 1