Hacker News new | ask | show | jobs
by danielvaughn 1612 days ago
I get the appeal of TS, but why the fuck would any project tie themselves to the language in this way? Angular 2+ did it, I didn't realize Deno did as well. Very bizarre decision unless I'm missing something.
3 comments

What do you mean? You can use TypeScript or JavaScript, so .ts or .js extensions.

I think what you are missing is that, if you use TypeScript in Deno, the extension is .ts. What's confusing is the way Node.js+TypeScript does it, which means using TypeScript with .js extensions.

Ohh I see. I should probably delete my comment then. I thought the OP meant that Deno enforces the use of Typescript like Angular does. That makes a lot more sense, thanks for the explanation.
The way TypeScript/Node does it is correct. The thing you're importing is JS with a .js extension. If you publish to npm you're publishing the JS files, not TS files. If you write .d.ts/.js pairs instead of .ts - which should be identical to importers, there's no .ts file to import.
Considering that Ryan Dahl started both Node.js (where imports do not include file extensions) and Deno (where he added them back after deciding it was a bad decision to leave them off) I'm not sure how you've come to the conclusion that TypeScript/Node does importing correctly. Additionally, the ecmascript import syntax https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe... specifically mentions that your tooling may or may not need file extensions but the examples in the spec (and indeed in browsers at large) require a full or relative path including the extension. If anything, I'd bet that file extensions make it into Node and tsc in the next few years.
Node requires the extension for imports already, unless the package you're importing from has defined extensionless entries in an export map.
I don't see how it is correct. If you publish to npm, of course you do it the way Node does it, but that's not very interesting. If you publish a module for consumption by Deno, you're publishing TS files, not JS files, and there is no need for .d.ts files.
Just like the sibling comment stated. Angular does not force you to use Typescript, you can use JavaScript. Angular 2+ even used to work with Dart but they dropped it.
> Angular 2+ even used to work with Dart but they dropped it.

"They" dropped Angular altogether: https://blog.angular.io/finding-a-path-forward-with-angularj...

I was not referring to Angularjs. I specifically mentioned Angular 2+.
My bad. Didn't know there was a "fork"... Thanks.
Deno uses SWC under the hood, so a large chunk of its TypeScript support is already coming from upstream.