Должен ли я печатать все в TypeScript - PullRequest
1 голос
/ 10 апреля 2020

Например, у меня есть функция:

functiom sum(a: number, b: number) { return a + b }

В приведенной выше функции я должен аннотировать тип возвращаемого значения функции number? Поскольку я думаю, что и разработчик, и компилятор могут сделать вывод, что результат функции должен иметь тип number.

Также как и метод httpClient.get в типе Angular return Observable, он уже определен в сигнатуре. Я явно объявил это в моей функции прокси-потребителя?

function getPosts() {
  return this.httpClient.get();
}

Итак, мой вопрос, должен ли я все печатать? Если нет, то когда я должен набрать его.

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

В языке программирования, который имеет как вывод типа, так и явные аннотации типа манифеста, вы можете рассматривать явные аннотации типа манифеста как эквивалент двойной записи в бухгалтерском учете: когда вы все делаете правильно, это никогда не должно быть необходимо, потому что выведенный тип и явный тип всегда одинаковы, , но , когда вы делаете ошибку, это поможет вам поймать эту ошибку.

Хорошее правило is:

Каждый publi c интерфейс должен быть явно аннотирован.

Независимо от того, аннотируете ли вы частные интерфейсы, ваш выбор.

Лично у меня есть немного более расслабленная версия:

Каждый интерфейс publi c должен быть явно аннотирован, если тип не является ослепительно очевидным как из name и реализация .

Итак, для чего-то вроде

export function toString() { return "Dummy user"; }

Я чувствую, что можно оставить это pe аннотации, но другие не согласны.

В вашем первом примере, вероятно, будет хорошо пропустить аннотацию типа. Хотя на языке, который перегружает + как для сложения, так и для конкатенации строк, легко случайно написать код, который возвращает строку, когда вы намеревались вернуть число, поэтому может иметь смысл защититься от этого.

В вашем втором примере, я чувствую, у него должна быть аннотация типа. Помните мое личное правило:

Каждый интерфейс publi c должен быть явно аннотирован, если только тип не является ослепительно очевидным как из name , так и из реализация .

Я чувствую, что тот факт, что функция с именем getPosts на самом деле, вы знаете, не получает сообщения, а скорее получает Observable сообщений, не достаточно очевидно.

0 голосов
/ 10 апреля 2020

Да, вы должны сделать привычным явно задавать все типы, это предотвратит появление неожиданных значений, а также улучшит удобочитаемость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...