Learn TypeScript Help

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