The one-keyword bug: when your library's types vanish across a package boundary
Here are two services. Same body, same return type, same everything a linter or a reviewer would look at:
export function Lights({ logger }: TServiceParams) { /* ... */ }
export const Lights = ({ logger }: TServiceParams) => { /* ... */ };
Swap one for the other inside a published library, pull that library into a downstream app through implies (or a rollup), and the runtime is identical โ but with the arrow, the app silently loses every type the library was supposed to bring. params.lighting goes from fully-typed to gone. Nothing errors. The build is green. The types just aren't there.
I hit this building library composition for core. The cause turned out to live in one of the quieter corners of TypeScript's declaration emitter, and it's worth a writeup โ because the rule people reach for ("arrows are the problem") is wrong, and the real rule is one line.