Files
aiturk-hermes-ide/apps/shared/src/billing-payment-method.test-d.ts
T

25 lines
768 B
TypeScript

/**
* Compile-time guard for BillingPaymentMethod.
*
* There is nothing to run here — the point is that `tsc` accepts this file.
* An earlier revision typed the fallback arm's `kind` as `string & {}`, which
* makes the discriminant non-literal and silently defeats narrowing for every
* arm: the `pm.brand` read below stops compiling. Keeping this file honest
* keeps `kind` narrowable.
*/
import type { BillingPaymentMethod } from './billing-types'
export function describePaymentMethod(pm: BillingPaymentMethod): string {
switch (pm.kind) {
case 'card':
return pm.wallet ? `${pm.wallet} ${pm.brand} ${pm.last4}` : `${pm.brand} ${pm.last4}`
case 'link':
return pm.email ?? 'Link'
case 'unknown':
return pm.raw_kind
}
}