Hacker News new | ask | show | jobs
by eyelidlessness 808 days ago
Bad:

- Omitting return types in non-private interfaces (eg crossing module or package boundaries, or anything used as input to generate documentation of same)

- Omitting concrete input parameter types

- Omitting explicit, known constraints on generic/polymorphic parameters

Subjective:

- Omitting any of the same on private equivalents which form something like an internal interface

- Omitting annotations of constant/static aspects of an interface whose inferred types are identical to their hypothetical annotation

Subjective but mostly good:

- Relying on inference in type derivation, where type derivation is the explicit goal of that API

- Preferring inference of interface/protocol/contract types over explicit annotation of concrete types which happen to satisfy them

- Omitting annotations for local bindings without distant indirection

Unambiguously good:

- Omitting local annotations of direct assignment where the type is obvious in situ

- Omitting redundant annotations of the same type which have the same effect without that redundancy