highlightjs / highlightjs/highlight.js
Future: Possibly more automated type compilation
- Dominant language
- JavaScript
- Stars
- 25k
- Forks
- 3.8k
- Avg merge
- 11h 35m
- Merged PRs (30d)
- 3
Description
> Getting access to the types in my main source. My source is all JS, it exports no types... all the type exports are ambient modules.
I’m proposing the inverse: define your types in your code.
> I dunno what that means? You mean declare them in highlight.js itself and then export them, import them into index.d.ts and then reexport them? I'm not sure I know how to do that if that's possible - or advisable?
Indeed: write them in JavaScript. No need to add a manual `index.d.ts`: typescript can compile javascript and generate that `index.d.ts`.
Here’s a smaller example: https://github.com/words/levenshtein-edit-distance/commit/2c3d890068b0d9405881a94f1439b31f8d08c392.
Lowlight is a bit more involved.
A bit more complex is `unist-util-select`: https://github.com/syntax-tree/unist-util-select/commit/4c1b02e34f849394bc90b42ea3bce0f52d9b2512.
And quite complex is xdm: https://github.com/wooorm/xdm.
I am not a fan of typescript. I personally don’t really love types either. But they are somewhat useful — especially for newcomers to a giant ecosystem ([unified](https://unifiedjs.com)).
I think types through jsdoc in javascript is rather nice: code is directly runnable, no building needed. But everything is still type checked by typescript (and I like `type-coverage` to ensure *everything* is completely typed).
It ensures `.d.ts` are kept up to date and work
Some more info here: https://github.com/voxpelli/types-in-js
_Originally posted by @wooorm in https://github.com/highlightjs/highlight.js/issues/3131#issuecomment-824157692_
Contributor guide
Assessment
This issue has not been assessed yet.