Home > Enterprise >  typescript gives property is missing a type
typescript gives property is missing a type

Time:01-26

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.

CodePudding user response:

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
  }
  •  Tags:  
  • Related