Built-in Utility Types
Quando um tipo específico parece útil na maioria
das bases de código, eles são adicionados ao TypeScript e
se tornam disponíveis para todos, o que significa que
você pode contar com a disponibilidade deles.
Partial
// Pega um objeto e transforma suas propriedades para apenas
leitura.
interface Sticker {
id: number;
name: string;
createdAt: string;
updatedAt: string;
submitter: undefined | string;
}
type StickerUpdateParam = Partial
// Cria um tipo que usa a lista de propriedades do
KeysFrom e dá a eles o valor do tipo.
Lista de chaves:
type StickerFromAPI = Readonly
// Cria um tipo pegando o conjunto de propriedades Keys
do Type. Essencialmente uma lista de permissões para extrair
informações de tipo de um tipo.
type NavigationPages = "home" | "stickers" | "about" | "contact";
// O formato do dado para o qual cada ^ é necessário:
interface PageInfo {
title: string;
url: string;
axTitle?: string;
}
const navigationInfo: Record
// Cria um tipo removendo o conjunto de propriedades Keys
de um tipo. Essencialmente uma lista de bloqueio para extrair
informação de tipo de um tipo.
type StickerSortPreview = Pick
// Cria um tipo com as propriedades de Type que não sobrepõe
RemoveUnion.
type StickerTimeMetadata = Omit
// Cria um tipo removendo null e undefined do conjunto de propriedades.
Útil quando você tem uma checagem de validação.
type HomeNavigationPages = Exclude
// Cria um tipo que converte todas as propriedades opcionais
para obrigatórias.
type StickerLookupResult = Sticker | undefined | null;
type ValidatedResult = NonNullable
// Diferente dos outros tipos, ThisType não retorna um novo tipo,
ao invés, ele manipula a definição de this dentro da função.
Você pode apenas utilizar ThisType quando você tem noImplicitThis
ativado no seu TSConfig.
https://www.typescriptlang.org/docs/handbook/utility-types.html
type AccessiblePageInfo = Required