В языке программирования, который имеет как вывод типа, так и явные аннотации типа манифеста, вы можете рассматривать явные аннотации типа манифеста как эквивалент двойной записи в бухгалтерском учете: когда вы все делаете правильно, это никогда не должно быть необходимо, потому что выведенный тип и явный тип всегда одинаковы, , но , когда вы делаете ошибку, это поможет вам поймать эту ошибку.
Хорошее правило is:
Каждый publi c интерфейс должен быть явно аннотирован.
Независимо от того, аннотируете ли вы частные интерфейсы, ваш выбор.
Лично у меня есть немного более расслабленная версия:
Каждый интерфейс publi c должен быть явно аннотирован, если тип не является ослепительно очевидным как из name и реализация .
Итак, для чего-то вроде
export function toString() { return "Dummy user"; }
Я чувствую, что можно оставить это pe аннотации, но другие не согласны.
В вашем первом примере, вероятно, будет хорошо пропустить аннотацию типа. Хотя на языке, который перегружает +
как для сложения, так и для конкатенации строк, легко случайно написать код, который возвращает строку, когда вы намеревались вернуть число, поэтому может иметь смысл защититься от этого.
В вашем втором примере, я чувствую, у него должна быть аннотация типа. Помните мое личное правило:
Каждый интерфейс publi c должен быть явно аннотирован, если только тип не является ослепительно очевидным как из name , так и из реализация .
Я чувствую, что тот факт, что функция с именем getPosts
на самом деле, вы знаете, не получает сообщения, а скорее получает Observable
сообщений, не достаточно очевидно.