Quick reference

Escopo: TypeScript. Resumo das convenções; os detalhes estão em conventions/.

Nomenclatura

CategoriaConvençãoExemplos
InterfacePascalCase, sem prefixo IUser, OrderRepository, PaymentGateway
Type aliasPascalCaseOrderStatus, UserId, ApiResponse<T>
Genérico simplesTfunction identity<T>(value: T): T
Genérico com contextoTItem, TKey, TValuefunction map<TItem, TResult>(...)
Enum (evitar)PascalCase + const objectORDER_STATUS.active; prefer union type

type vs interface

CenárioUsar
Shape de objeto / contratointerface
Union typetype
Intersection de tipostype
Mapped type / conditional typetype
Estender outra interfaceinterface ... extends
Alias de primitivotype UserId = string

Utility types

UtilityUsoExemplo
Partial<T>Todos os campos opcionaisPartial<User> em updates parciais
Required<T>Todos os campos obrigatóriosRequired<Config> após merge de padrões
Pick<T, K>Subconjunto de propriedadesPick<User, 'id' | 'email'>
Omit<T, K>Remover propriedadesOmit<User, 'password'> em DTOs
Record<K, V>Mapa chave → valor tipadoRecord<OrderStatus, string>
Readonly<T>Campos que não podem ser alteradosReadonly<Config>
ReturnType<T>Tipo de retorno de uma funçãoReturnType<typeof buildOrder>
Parameters<T>Tipos dos parâmetros de uma funçãoParameters<typeof createUser>
NonNullable<T>Remove null e undefined do tipoNonNullable<string | null>

O que evitar

EvitarUsar
anyunknown: obriga a checar o tipo antes do uso
Prefixo I em interfacePascalCase direto: User
as Type para calar o compiladorUma checagem de verdade, ou repensar a função
Enum nativoObjeto as const com o union type derivado dele
Object, String, Numberobject, string, number: os primitivos, e não os wrappers
Function como tipoA assinatura escrita: (id: string) => Promise<User>
! (afirmação de não-nulo) soltoCláusula de proteção, ou uma checagem explícita

DoDocs v3.7.0 · Desenvolvido por @thiagocajadev · Baseado no trabalho de pmndrs/docs · Poimandres.