Share an interface between two apps?

Just define the interface in a separate file, or collect all shared interfaces in a file interfaces.ts (or a interfaces.d.ts). Both projects can reference this file, you can have copies of that file in both projects.

TypeScript is not like i.e. C# where you have to reference an underlying assembly (although this will be fixed in C# with assembly neutral interfaces).

But beware: TypeScript has no dedicated runtime that assures your interfaces match. As everything is still JavaScript, at runtime you have to make sure the interfaces match. If one projects uses i.e. another version of the interfaces with properties that didn't exist in previous versions, you will still run into trouble.


Are there any established or emerging conventions in the TypeScript ecosystem to distribute libraries of interfaces via NPM

Use the typescript key in your package.json to point to the definition file :

https://github.com/DefinitelyTyped/tsd#link-to-bundled-definitions