Creating Types with a Type Mapping
A feature final provida para type mappings é a possibilidade de criar novos types, que possam transformar um especificação como mostrado o uso básico dessas features, que cria um tipo que contem propriedades name e city:
import {City, Person, Product, Employee} from "./dataTypes";
type CustomMapped<K extends keyof any, T> = {
[P in K]: T
};
let p1: CustomMapped<"name" | "city", string> = {name: "Bob", city: "London"};
let p2: Record<"name" | "city", string> = {name: "Alice", city: "Paris"};
console.log(`Custom mapped type: ${p1.name}, ${p1.city}`);
console.log(`Built-in mapped type: ${p2.name}, ${p2.city}`)
O primeiro generic type parameter é restringido usando keyof any que significa que um literal value type union pode ser especificado e isso pode conter os nomes das propriedades requeridas para o novo tipo
O segundo generic type parameter é usado para especificar o tipo para a propriedade que são criadas e usadas deste modo:
let p1: CustomMapped<"name" | "city", string> = { name: "Bob", city: "London"}
O mapeamento produz um tipo com 2 propriedades strings: name e city. TypeScript prove o mapeamento built-in Record que performa a mesma tarefa
let p2: Record<"name"| "city", string> = { name: "Alice", city: "Paris"};
11 December 2025