TypeScript: Partial
Opublikowano: 23.02.2023 - tagi: TypeScript JavaScript Typ
Do czego służy Partial?
Spójrz na poniższy kod:
interface Product {
name: string;
price: number;
description: string;
weight: number;
}
Mamy tutaj typ Product wszystkie jego pola są wymagane. Więc jeśli spróbujesz stworzyć obiekt o typie Product nie definiując wartości dla wszystkich wymaganych pól TypeScript zgłosi błąd.
Kolejny kod:
const buildProduct = (): Product => {
return {
name: randomName(),
price: randomPrice().
description: randomDescription(),
weight: randomWeight()
}
}
Powyższa funkcja tworzy obiekt typu Product. Przydatny builder, kiedy na przykład piszesz testy. Problem z tym kodem jest taki, gdy potrzebujesz przekazać wartości do konkretnych pól. Oczywiście możesz stworzyć obiekt i przypisać potrzebne wartości.
Można też tak:
const product: Product = buildProduct({ name: 'Super product', price: 150 });
Jak to zrobić?
const buildProduct = (product: Product): Product
Taki zapis oczywiście nie zadziała. W takich sytuacjach sprawdzi się Partial:
const buildProduct = (product: Partial<Product>): Product => {
return {
name: randomName(),
price: randomPrice().
description: randomDescription(),
weight: randomWeight(),
...product
}
}
Teraz zapis:
const product: Product = buildProduct({ name: 'Super product', price: 150 });
Zadziała.
Partial jak widać pozwala na powiedzenie TypeScript: wartości danego typu są opcjonalne.