Mapped Types with Template Literals
O TypeScript 4.1 adiciona suporte para as template literals, você pode
aprender os conceitos básicos em intro-to-template-literals
A 4.1 introduz uma nova sintaxe dentro declaração mapeada de tipos,
agora você pode utilizar "as `templated string`" que pode ser utilizado para transformar
strings dentro de uma união.
Por exemplo, este tipo irá transformar todas as propriedades de um tipo existente
em quatro funções que correspondem a chamadas REST tradicionais.
String literals template para descrever cada endpoint da API:
// Pega um tipo, então para cada propriedade da string no tipo, mapeia
esta chave para a REST acima, que criaria as quatro funções.
type GET
// A expressão `Key extends string ? Key : never` é necessária porque um objeto
pode conter strings, números e símbolos como chaves. Podemos manipular somente
os casos de chaves string aqui.
Agora temos uma lista de objetos disponíveis através da API:
type RESTify
// Continue aprendendo mais sobre template literals em:
string-manipulation-with-template-literals
Ou leia o artigo em nosso blog:
https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-beta/#template-literal-types
interface APIs {
artwork: { id: string, title: string};
artist: { id: string, name: string};
location: { id: string, address: string, country: string }
}
// Entao quanto temos um objeto que usa estes tipos
declare const api: RESTify