В TypeScript есть несколько способов достать из объекта только поля одного типа.
1. Используйте синтаксис отбора (дополнительной фигурной скобки) в сопоставлении типа. Это позволит создать новый тип, содержащий только поля указанного типа.
type Person = { name: string; age: number; email: string; }; type PersonName = { name: string; }; const person: Person = { name: "John", age: 30, email: "[email protected]" }; const personName: PersonName = person; // допустимо console.log(personName); // { name: "John" }
В этом примере создается тип PersonName
, который содержит только поле name
. При присвоении переменной personName
значение переменной person
, TypeScript автоматически отберет только поле name
из объекта person
.
2. Используйте оператор Pick
для явного выбора полей из объекта и создания нового типа.
type Person = { name: string; age: number; email: string; }; type PersonName = Pick<Person, "name">; const person: Person = { name: "John", age: 30, email: "[email protected]" }; const personName: PersonName = person; // допустимо console.log(personName); // { name: "John" }
В этом примере с помощью оператора Pick
создается новый тип PersonName
, который выбирает только поле name
из типа Person
. При присвоении переменной personName
значение переменной person
, TypeScript автоматически отберет только поле name
из объекта person
.
3. Используйте конструкцию as
для явного преобразования типа объекта.
type Person = { name: string; age: number; email: string; }; const person: Person = { name: "John", age: 30, email: "[email protected]" }; const personName = person as { name: string }; console.log(personName); // { name: "John" }
В этом примере с помощью конструкции as
мы явно указываем, что переменная person
должна интерпретироваться как объект с полем name
. TypeScript автоматически отберет только поле name
из объекта person
и присвоит его переменной personName
.
В обоих случаях TypeScript выполняет статическую проверку типов и гарантирует, что новый объект (или переменная) будет содержать только поля указанного типа. Это позволяет избежать ошибок и облегчить разработку, особенно при работе с большими объектами или в командной разработке.