I ended up getting what I wanted with this layout:
public/
js/
lib/
test/
src/
ts/
lib/
test/
In src/ts/test/tsconfig.json:
"outDir": "../../../public/js"
In src/ts/lib/tsconfig.json:
"outDir": "../../../public/js/lib"
In src/ts/test/test.ts:
/// <reference path="../lib/CoolStuff.ts" />
In Atom, if you’re working in src/ts/lib, building will compile those files into public/js/lib.
If you’re working in src/ts/test, the build will compile *.ts in test – as well as all files referenced. I don’t see a way to prevent referenced file compilation, but at least with this layout they go to the same location.