Когда необходимо объявить возвращаемый тип функции в TypeScript? - PullRequest
0 голосов
/ 07 декабря 2018

Если у меня есть следующая базовая функция, typescript может автоматически определить тип возвращаемого значения.

function myFunction(x: number, y: number) {
  return x * y;
}

Полезно ли объявлять типы возвращаемого значения, только если typescript не может определить тип возвращаемого значения, потому что какой-то другой вызовпротекает any и поэтому не может сделать правильный вывод?

function myFunction(x: number, y: number) {
  return x * y || callThatReturnsAny();
}

В этом случае я хотел бы напечатать его, если я знаю, callThatReturnsAny() возвращает number

function myFunction(x: number, y: number): number {
  return x * y || callThatReturnsAny();
}

Хотя лучшим решением было бы просто набрать callThatReturnsAny(), чтобы typescript мог сделать вывод?Но в том случае, когда вы действительно должны использовать явные типы возврата?

1 Ответ

0 голосов
/ 07 декабря 2018

Я включаю noImplicitAny и избегаю добавления аннотаций типов почти во всех случаях, кроме функций.Зачем?Потому что я не хочу случайно возвращать тип объединения, когда:

  1. Я забыл вернуть значение
  2. Я вернул значение неправильного типа

Например, мой день пойдет по-другому, если я начну с:

function example(a: number, b: number) {

против

function example(a: number, b: number): number {

Вот что будет дальше ...

function example(a: number, b: number) {
    if (a > 5) {
        return 5;
    }

    if (b > a) {
        return 'b';
    }
}

Мой тип возврата теперь number | string | undefined.

Если я использую аннотацию типа возврата, я получаю дополнительную помощь *.

Это поможет вам вернуть правильный тип:

Wrong return type

В строгом режиме он гарантирует, что вы возвращаете что-то каждый раз.

Missing return (strict mode)

* если вам нужна дополнительная помощь, у вас также будет все строгие вещи, включенные .

...