Почему машинопись не имеет типа «функция»? - PullRequest
2 голосов
/ 04 мая 2020

Я новичок в машинописи и удивляюсь, почему я не могу этого сделать:

const obj: {
  property1: string
  property2: boolean
  property3: function
}

Я думаю, что единственная альтернатива - делать:

const obj: {
  property1: string
  property2: boolean
  property3: any
}

Почему Я должен реализовать функцию в property3 непосредственно в объявлении объекта?

Ответы [ 2 ]

6 голосов
/ 04 мая 2020

Typescript имеет тип Function, что означает функцию, которая принимает аргументы any и возвращает результат any, хотя я настоятельно рекомендую вам его не использовать.

Вместо этого следует использовать сигнатуру функции , которая позволяет явно указывать типы параметров и тип возвращаемого значения:

let obj: {
  property1: string
  property2: boolean
  property3: (a: string, b: boolean) => number
}

Playground Link

0 голосов
/ 04 мая 2020

Свойство должно быть реализовано, потому что оно является частью типа obj

Если вы не хотите инициализировать свойство при объявлении, его необходимо сделать необязательным.

Например :

const obj: {
  property1: string
  property2: boolean
  property3?: any
}

Теперь вы можете сделать:

obj = { property1: 'A string'. property2: true };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...