TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Good reasons not to use TypeScript

17 点作者 gymshoes大约 5 年前

8 条评论

gymshoes大约 5 年前
This article looked like a deliberate sarcasm or the author's points were very weak.
mcv大约 5 年前
We switched our project to Typescript about a year ago, because we had to handle a lot of different types of data, and it was nice to know which type you have in your hands. I wrote a bunch of code to parse anonymous JSON objects and turn them into objects of the proper types. We added interfaces for all sorts of things.<p>End result: checks don&#x27;t work, because all our data is run-time. Most of our parameters are still of type `any`. We need to explicitly specify types everywhere that are either `any`, or they&#x27;re not actually checked. I discovered recently that someone had accidentally created a type that was conceptually the duplicate of an existing type. One of those should never ever get used, but the code doesn&#x27;t complain, because it&#x27;s only encountering this in runtime.<p>So I&#x27;m inclined to agree: Typescript doesn&#x27;t really add what it&#x27;s supposed to add. It adds a lot of work, without providing the security we expect from it.
评论 #22347354 未加载
wruza大约 5 年前
I don’t see how having at least some types is more risky than not having them at all. Type system is an instrument that prevents you from e.g. using&#x2F;setting x.id instead of x.y.id silently and succesfully (for some time). The entire argument is stretched on the particular situation of a malformed input.<p>I think it is well-known fact among programmers that a prototyping phase of 10kloc+ project <i>requires</i> types. Not for a formal proof, but to help programmers to understand their code better and faster at monday morning through a type error feedback. There is no reason to not use ts the same way there is no reason to not have a ruler and yesterday’s sketches in your toolbox.<p>Everyone may have their opinion, but this modern “media presence in software development” nonsense goes beyond all limits.
chiyc大约 5 年前
Watching the talk &quot;Typing the Untyped: Soundness in Gradual Type Systems&quot; by Ben Weissmann (<a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=uJHD2xyv7xo" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=uJHD2xyv7xo</a>) gave me an appreciation for the challenges in designing in a gradual type system like TypeScript.<p>When I first started using TypeScript, I was surprised to find that it wouldn&#x27;t compile code I absolutely knew was correct, or that it would allow &quot;risky&quot; code in some cases as the author says. The talk formalized the issues I faced using TypeScript by teaching me about soundness, completeness, and the trade-offs that are often taken between the two.<p>Generally, TypeScript has made my life a lot easier than the occasional trouble it&#x27;s brought me.
coffexx大约 5 年前
We have a few TypeScript projects where I work at, one of them in particular had to ingest data from a large number of our internal APIs and do some crunching with it.<p>Validation of this data was essential, the crunching was complicated, and we wanted to be able to make assumptions about the data through the type system to make the code simpler.<p>We found JSONSchema validation was a perfect fit for this purpose (via ajv). In all the overhead of maintaining JSONSchema files was much lower than we thought it would be, and it even exposed some bugs in our internal APIs that we patched up at the same time.<p>I do wish there was a nice way to generate that sort of validation code directly from a TypeScript interface though.
joppy大约 5 年前
I think the point about arbitrary data entering your system once everything is compiled is quite valid: it is common to call into typescript-compiled code from arbitrary JavaScript. Typed Racket had an interesting solution to this, where it would generate run-time contract checks at all of the typed-to-untyped boundaries, and so it could be sure that a compiled typed function was indeed receiving objects of the correct form.
pjmlp大约 5 年前
A very good point that experience has taught me:<p>It is not a platform language. Thus just like any guest language brings its own tooling, idiomatic library wrappers around platform libraries, an additional code generation layer to debug, having to write FFI (or type declarations to platform libs).<p>Having said this, I do use TypeScript in the context of Angular or BabylonJS, but that is because those frameworks are the &quot;platform&quot;.
评论 #22353243 未加载
winrid大约 5 年前
Client side I love TypeScript, especially in Angular.<p>Server side? Gimme Java, most of the time.