import * as __ctHelpers from "commontools"; import { pattern, UI } from "commontools"; interface Problem { price: number; discount: number; tax: number; } export default pattern(({ price, discount, tax }) => { return { [UI]: (
Price: {price}
Discount: {__ctHelpers.derive({ type: "object", properties: { price: { type: "number", asOpaque: true }, discount: { type: "number", asOpaque: true } }, required: ["price", "discount"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { price: price, discount: discount }, ({ price, discount }) => price - discount)}
With tax: {__ctHelpers.derive({ type: "object", properties: { price: { type: "number", asOpaque: true }, discount: { type: "number", asOpaque: true }, tax: { type: "number", asOpaque: true } }, required: ["price", "discount", "tax"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { price: price, discount: discount, tax: tax }, ({ price, discount, tax }) => (price - discount) * (1 + tax))}