isolatedDeclarations, and the build it made parallel

A flag requiring every export to have an explicit type annotation, in exchange for declaration files that can be generated without type checking.

// with isolatedDeclarations, this is an error
export function total(order) { return order.lines.length }

// this is fine
export function total(order: Order): number {
  return order.lines.length
}

// and the payoff: .d.ts generation no longer needs the
// whole program, so packages build in parallel rather
// than in dependency order.

The cost is annotating every export, which in a monorepo of eleven packages was about four hundred additions and mostly mechanical. The build went from four minutes serial to fifty seconds parallel, which is the sort of number that only appears when the packages genuinely depend on each other — a flat repository would gain nothing.