TypeScript: Omit
Opublikowano: 26.04.2022 - tagi: TypeScript JavaScript
Omit tworzy nowy typ danych na podstawie już istniejącego. Przydaje się szczególnie wtedy kiedy chcemy się pozbyć niektórych pól ze wzorca.
Składania wygląda następująco:
Omit<Type, Keys>
Pierwszy parametr Type to istniejący typ danych. Drugi: Keys to pole lub pola, które nie zostaną wzięte pod uwagę, w nowo stworzonym typie danych.
Jest dostępny w TypeScript od wersji 3.5
Przykłady
Przykład 1
interface Book {
title: string;
author: string;
pages: number;
}
type AudioBook = Omit<Book, 'pages'>;
// AudioBook będzie wyglądać tak:
/*
AudioBook {
title: string;
author: string;
}
*/
Mamy nowy typ AudioBook bez pola pages.
Przykład 2
Jeśli chcemy pozbyć się więcej niż jedno pole, piszemy:
interface Book {
title: string;
author: string;
pages: number;
weight: number;
}
type eBook = Omit<Book, 'pages' | 'weight'>;
// eBook będzie wyglądać tak:
/*
eBook {
title: string;
author: string;
}
*/
Przykład 3
Za pomocą Omit możemy także rozszerzać interfejsy:
interface Book {
title: string;
author: string;
pages: number;
weight: number;
}
interface AudioBook extends Omit<Book, 'pages' | 'weight'> {
length: number;
}
// Interfejs AudioBook będzie wyglądać tak:
/*
interface AudioBook {
title: string;
author: string;
length: number;
}
*/
Przykład 4
Dzięki Omit możemy też "nadpisać" dane pole:
interface Book {
id: string;
title: string;
author: string;
}
interface AudioBook extends Omit<Book, 'id'> {
id: number;
}
// Interfejs AudioBook będzie wyglądać tak:
/*
interface AudioBook {
id: number;
title: string;
author: string;
}
*/
W interfejsie Book mamy pole id o typie string. A w nowym typie AudioBook potrzebujemy wszystkie pola z Book tylko pole id powinno być typu number. Dzięki Omit jak widać, można to łatwo osiągnąć.