Dora
Dora

Reputation: 6970

typescript gives property is missing a type

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

Answers (1)

CertainPerformance
CertainPerformance

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

Related Questions