Object to validate as SearchResponseProduct
Type predicate indicating if product is a valid SearchResponseProduct
// Valid search response product
const validProduct = {
id: 12345,
vid: 67890,
image: 1,
brand: false,
code: "CHEM-001",
ean: "1234567890123",
sku: "SKU-001",
score: 1.0,
available: true,
unit: true,
url: "/products/chemical-1",
title: "Sodium Chloride",
fulltitle: "Sodium Chloride 500g",
variant: "500g",
description: "High purity sodium chloride",
data_01: "Additional info",
price: {
price: 29.99,
price_incl: 29.99,
price_excl: 24.79,
price_old: 39.99,
price_old_incl: 39.99,
price_old_excl: 33.05
}
};
if (isSearchResponseProduct(validProduct)) {
console.log("Valid product:", validProduct.title);
console.log("Price:", validProduct.price.price);
console.log("Available:", validProduct.available);
}
export function isSearchResponseProduct(product: unknown): product is SearchResponseProduct {
return searchResponseProductSchema.safeParse(product).success;
}
Type guard to validate if an object has the correct structure for a Laboratorium Discounter search response product. Checks for the presence and correct types of all required product properties including basic info, availability, and a valid price object.