Object to validate as SearchResult
Type predicate indicating if result is a valid SearchResult
// Valid search result item
const validResult = {
"product.productId": "12345",
"product.productName": "Sodium Chloride",
"product.shortDescription": "High purity NaCl",
itemPrice: "29.99",
"product.seoName": "sodium-chloride",
productUrl: "/products/sodium-chloride",
productName: "Sodium Chloride 500g",
qtyDiscountAvailable: false
};
if (isSearchResultItem(validResult)) {
console.log("Valid search result:", validResult["product.productName"]);
console.log("Price:", validResult.itemPrice);
console.log("URL:", validResult.productUrl);
}
// Invalid search result (missing required properties)
const missingProps = {
"product.productId": "12345",
"product.productName": "Sodium Chloride"
// Missing other required properties
};
if (!isSearchResultItem(missingProps)) {
console.error("Invalid result - missing required properties");
}
// Invalid search result (wrong types)
const wrongTypes = {
"product.productId": 12345, // Should be string
"product.productName": 123, // Should be string
"product.shortDescription": 123, // Should be string
itemPrice: 29.99, // Should be string
"product.seoName": 123, // Should be string
productUrl: 123, // Should be string
productName: 123, // Should be string
qtyDiscountAvailable: "false" // Should be boolean
};
if (!isSearchResultItem(wrongTypes)) {
console.error("Invalid result - wrong property types");
}
Type guard to validate if an object is a valid Carolina search result item. Checks for the presence and correct types of all required product properties including product ID, name, description, price, and URL.