I actually started by writing it in TS and later moved to just a TS declaration file and a raw JS source. This means it can be used smoothly in both environments (similar to using a definitelytyped resource).
What made you go back to plain javascript?
For an ambitious project this is probably still a better approach. But did you try using the --declaration switch?