```ts
export function explodeKit(catalog: Record<string, { makes: number; parts: [string, number][] }>, kit: string, want: number): Record<string, number> {
  if (want <= 0) {
    throw new Error("Want must be a positive integer");
  }

  const baseParts: Record<string, number> = {};

  function explode(kitName: string, unitsNeeded: number): void {
    const recipe = catalog[kitName];
    if (!recipe) {
      throw new Error(`Kit '${kitName}' not found in catalog`);
    }

    const runsNeeded = Math.ceil(unitsNeeded / recipe.makes);
    for (const [part, count] of recipe.parts) {
      const totalPartCount = count * runsNeeded;
      if (catalog[part]) {
        explode(part, totalPartCount);
      } else {
        baseParts[part] = (baseParts[part] || 0) + totalPartCount;
      }
    }
  }

  explode(kit, want);
  return baseParts;
}
```