1. No build step is an appealing feature for some.
Knowing that what is shipped is what you wrote, not what some transpiler spat out, might have some value.
2. Syntax is also subject of personal preference.
Anecdotally, I personally pretty much prefer having "non-executive content" swept aside the "executive" parts, not mixed together in single expression (when applicable).
I assume it is matter of habit, but even though I use both TS and JS, to this days, over TS
function uppercase (something: string): string {
return something.toUpperCase()
}
I'd really rather prefer seeing the "fluff" (types and comments) separated from the "meat" (actual code): in JS (JSDoc) /**
* @param {string} something - glyphs presumably not (only) from upper case
* @returns {string} all glyphs from upper case, when applicable
*/
function uppercase (something) {
return something.toUpperCase()
}
since I still keep mentally stumbling over those :fluffy chunks in TS. Again, probably mater of habit really.