TypeScript with any scattered through it isn't TypeScript. It's JavaScript with slower builds and false confidence. The pattern is everywhere: any to silence an error you don't understand, ! to stop the compiler complaining about a value that might be null, a direct as SomeType cast on data you haven't actually validated. Each one is a small lie you're telling the type system. Enough of them and the type system stops being useful – it's just friction. Strict TypeScript is a different experience. When you can't use any, you have to model the problem properly. When you can't suppress nullability, you have to decide what happens when the value is absent. The discipline the compiler imposes is the same discipline good API design requires, and the class of errors it eliminates – null dereferences, wrong shape assumptions, missed union cases – are disproportionately the ones that reach production undetected. Most teams "use TypeScript" but don't actually use TypeScript. The difference shows up in PRs, in runtime exceptions, and in how confidently new engineers can move through an unfamiliar codebase. What's the tell in a codebase that the team has given up on the type system? #TypeScript #SoftwareEngineering #WebDevelopment
Paul Hadfield’s Post
More Relevant Posts
-
TypeScript 6.0 is here: The end of an era (and a massive speed boost) ⚡ If you’ve been using TypeScript, things are about to change—in a very fast way. The latest update (v6.0) isn't just a regular patch. It's the "final warning" before TypeScript completely rewrites its core. The team is moving away from its original JavaScript codebase to a brand-new compiler written in Go. Why does this matter? Because we’re talking about native speed and multi-threaded type checking. Here is the ELI5 (Explain Like I'm 5) on what’s changing: </> The "Go" Migration: TypeScript is graduating. By moving its compiler to Go, future versions will be significantly faster at checking your code. </> Smart Defaults: Strict mode is now ON by default. It's TypeScript’s way of saying "I’m not asking anymore—write safer code!" 🛑 </> Cleaning the Closet: They are removing a lot of "old" features (like ES5 support and certain module resolutions) to make the engine leaner and meaner. </> Faster Installs: A change in how types are handled in node_modules could speed up projects by 20–50%. The Takeaway: We are moving toward a world where "compilation time" might finally stop being a coffee-break excuse. TypeScript is getting serious about performance. Are you excited about the move to a Go-based compiler, or do you think the "breaking changes" will be a headache for large codebases? #TypeScript #WebDev #SoftwareEngineering #GoLang #ProgrammingNews #TechTrends
To view or add a comment, sign in
-
-
TypeScript 6.0 shipped March 23, 2026. It's the last version of the TypeScript compiler written in TypeScript. Everything after it — TypeScript 7.0 — is rebuilt in Go. 🐳 The numbers: → VS Code (1.5M lines): 77 seconds → 7.5 seconds → Sentry codebase: 133 seconds → 16 seconds → Memory usage: cut in half That's not a small improvement. That's a different category of tool. But first — TypeScript 6.0 is the bridge release you need to get through. Here's what changed: 🔧 9 new defaults: strict ON, ESM as default, bundler module resolution, all files treated as modules ❌ Breaking changes: ES5 target removed, AMD/UMD deprecated, --outFile gone, @types no longer auto-discovered ✅ New features: - Temporal API types (proper date handling, finally) - RegExp.escape() and Promise.try() types - Map.getOrInsert() typed correctly - #/ subpath imports - Improved method type inference 💡 The Go compiler (tsgo) is already available: npm install @typescript/tsgo tsgo --project tsconfig.json Try it. The compile time difference is immediate and shocking. I wrote the full guide for what changed, what broke, how to upgrade, and what TypeScript 7.0 actually means for your CI/CD and monorepo workflows. Is your team already planning the 6.0 upgrade? 👇 #TypeScript #JavaScript #WebDev #Frontend #NodeJS #100DaysOfBlogging
To view or add a comment, sign in
-
TypeScript 7 beta is where the TypeScript Go compiler stops feeling like a lab demo and starts looking like a real workflow decision. The headline is speed. The more interesting part is latency. Faster type checking is nice in the same way a faster build is nice: you do not fully appreciate it until your editor stops sighing every time you touch a shared type. CI gets less dramatic. Refactors feel less like filing paperwork. That is the part of TypeScript performance that actually changes behavior. But this is still a beta, not a victory lap. `tsgo` and the TypeScript native preview are arriving in the middle of real JavaScript tooling ecosystems: bundlers, linters, test runners, editor plugins, build scripts, monorepos, and everyone's favorite archaeological site, deprecated compiler flags. The migration story matters as much as the compiler story. TS6 and TS7 side-by-side sounds boring until you are the person explaining why one package works perfectly and another one depends on a programmatic API that is not stable until later releases. That is the practical read: TypeScript 7 beta is not "rewrite your tooling this afternoon." It is "start measuring where your feedback loops hurt." The best developer experience upgrades are rarely glamorous. They just make the machine argue with you faster. Where would you test `tsgo` first: editor latency, CI, or a painful monorepo build? #TypeScript #JavaScript #WebDevelopment #DeveloperExperience #FrontendDevelopment #SoftwareEngineering #DevTools
To view or add a comment, sign in
-
-
𝗧𝗮𝗸𝗲 𝗬𝗼𝘂𝗿 𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 𝗦𝗸𝗶𝗹𝗹𝘀 𝗧𝗼 𝗧𝗵𝗲 𝗡𝗲𝘅𝘁 𝗟𝗲𝘃𝗲𝗹 You know how TypeScript helps you catch typos and prevents errors. But many developers stop there. They treat TypeScript as just JavaScript with type annotations. The real power of TypeScript lies in its advanced type system. It helps you make invalid states unrepresentable. This means you can write code where the compiler catches logical errors before they become bugs. Let's explore some advanced types: - Union types allow a variable to be one of several types. - Discriminated unions create self-documenting, resilient code. - Template literal types generate new string literal types by combining others. - Utility types like Partial, Pick, and Omit help with type transformation. These types help you: - Create precise formats - Validate routes and function names at compile time - Build flexible, yet strict, abstractions - Update entities safely Newer operators like satisfies and as const help you infer and validate types with minimal annotation. Your challenge: Look at a key interface or state object in your project. Ask yourself: "Can this be in an inconsistent state?" If yes, refactor it using a discriminated union. Share your approach to using TypeScript's type system to prevent bugs in the comments below! Source: https://lnkd.in/gincVBvR
To view or add a comment, sign in
-
If you're still on TypeScript 5.x, here's what you need to know: TypeScript 6.0 shipped last month, and everything it deprecates gets hard removed in 7.0. There is no grace period after that. I did a migration myself today and wrote a migration guide that breaks down the full scope of changes: → 10+ new compiler defaults that flip existing behavior → 13 deprecations, each with a concrete replacement → Behavioral shifts that won't trigger warnings but can still break your build → A step by step migration checklist, prioritized by impact → The ts5to6 CLI tool that automates the most disruptive config rewrites The guide includes every PR reference, linked issues, and the rationale behind each change. 🔗 https://lnkd.in/e7YXdprc Feedback and corrections welcome.
To view or add a comment, sign in
-
TypeScript's type system is the one I've enjoyed working with since day one. Not because it's the safest or the most strict. It's neither, actually. `any` breaks every guarantee, the compiler trusts your type assertions blindly, some rules it just doesn't enforce. But it lets me do something I haven't seen elsewhere: take a type, iterate over its keys, remap values, filter by condition, drop fields — all at the type level, before a single line runs. Less annotation, more like a query language for shapes. Most type systems tell you what things are. TypeScript also lets you express how one type becomes another. And it was built on top of JavaScript — a language where any value can be anything at runtime. The type system had to be flexible enough to describe that mess. Turns out, that's what made it powerful. The type system built for the messiest language ended up being the most interesting one to work with. What’s your favorite type-level trick in your language? #TypeScript #Programming #SoftwareEngineering #DeveloperExperience #JavaScript
To view or add a comment, sign in
-
-
🚀 𝗧𝘆𝗽𝗲𝗦𝗰𝗿𝗶𝗽𝘁 7.0 𝗷𝘂𝘀𝘁 𝗱𝗿𝗼𝗽𝗽𝗲𝗱 (𝗯𝗲𝘁𝗮)... 𝗮𝗻𝗱 𝗶𝘁'𝘀 𝗮 𝒃𝒊𝒈 𝒅𝒆𝒂𝒍 Not because of new features. Because of what's under the hood. ⚡ 1. 𝗨𝗽 𝘁𝗼 10𝘅 𝗳𝗮𝘀𝘁𝗲𝗿 𝗯𝘂𝗶𝗹𝗱𝘀 Yes, really. Massive performance gains thanks to: 🔹 Native execution 🔹 Parallelism 🔄 2. 𝗧𝗵𝗲 𝗰𝗼𝗺𝗽𝗶𝗹𝗲𝗿 𝘄𝗮𝘀 𝗿𝗲𝘄𝗿𝗶𝘁𝘁𝗲𝗻 𝗶𝗻 𝗚𝗼 TypeScript is no longer running on JavaScript. It's now a native system. 🧠 3. 𝗦𝗮𝗺𝗲 𝗯𝗲𝗵𝗮𝘃𝗶𝗼𝗿, 𝗻𝗲𝘄 𝗲𝗻𝗴𝗶𝗻𝗲 🔹 Same type system 🔹 Same semantics 👉 Just dramatically faster 🧪 4. 𝗔𝗹𝗿𝗲𝗮𝗱𝘆 𝘂𝘀𝗲𝗱 𝗶𝗻 𝗿𝗲𝗮𝗹-𝘄𝗼𝗿𝗹𝗱 𝗰𝗼𝗱𝗲𝗯𝗮𝘀𝗲𝘀 Multi-million line projects are already running it. And the feedback?... Huge speedups. 🔁 5. 𝗦𝗺𝗼𝗼𝘁𝗵 𝗺𝗶𝗴𝗿𝗮𝘁𝗶𝗼𝗻 𝗽𝗮𝘁𝗵 You can run TS 6 and TS 7 side-by-side. 👉 No risky upgrade needed. 🧠 The real shift: TypeScript is moving from: "language innovation" ➡️ to: "developer experience at scale" 🚀 The takeaway: The future of TypeScript isn't more features... 👉 It's 𝒇𝒂𝒔𝒕𝒆𝒓 𝒇𝒆𝒆𝒅𝒃𝒂𝒄𝒌 𝒍𝒐𝒐𝒑𝒔 🔗 Source: https://lnkd.in/dQtvQHjz #TypeScript #JavaScript #Frontend #Backend #Performance #DX
To view or add a comment, sign in
-
-
TypeScript devs explaining why you should rewrite everything in TypeScript: "Type safety!" "Catches bugs at compile time!" "Better autocomplete!" "Refactoring is so much easier!" Cool. How long did you spend defining interfaces for a function that returns a string? "...2 hours." Meanwhile JavaScript devs wrote the entire feature, shipped it, got user feedback, and iterated twice. Does TypeScript catch bugs? Yes. Does your 500-line type definition file prevent runtime errors? No. Will TypeScript devs care? Absolutely not. Both languages are incredible. But treating every project like it's a banking system is how you end up debugging generic constraints at 2 AM for a landing page. Use the right tool. Not the safest one. #TypeScript #JavaScript #Programming #DevLife #TechTwitter
To view or add a comment, sign in
-
-
I have recently released a new blog post. The gap between "Type Safety" and "Type Convenience" is shrinking. I just published a deep dive into two features that every TS developer should be using in 2026: 1. satisfies > Type Annotations Stop choosing between strict validation and literal type preservation. satisfies gives you both. 2. Automatic Type Predicates No more manual type guards just to filter an array. TypeScript 5.5+ now understands your logic automatically. #typescript #javascript #typePredicate #satisfiesOperator #typeCheck #Angular #React #vue Check out the blog post
To view or add a comment, sign in
-
🚀 I always thought performance issues in JavaScript were random… until I started connecting it with how V8 Engine actually runs our code. And honestly… a lot of “weird” bugs suddenly made sense 😄 ⚠️ The real pain we all face Code runs fast… then suddenly slows down Same function, different inputs → different performance Small changes → unexpected lag 👉 Most of the time, it’s not React or Node… it’s how V8 is optimizing (or de-optimizing) your code 🔄 What’s happening under the hood JavaScript → AST → Bytecode (Ignition interpreter) → Just-in-time compilation (TurboFan compiler) for hot paths 🔥 → Optimized machine code → ❌ Deoptimization if assumptions break 💣 Where we unknowingly mess up Changing types → monomorphic → polymorphic ❌ Object shape changes → hidden class churn ❌ Mixing data types → inline cache misses ❌ Basically… we confuse the engine 😅 🤯 Now here’s where TypeScript clicked for me TypeScript doesn’t make JavaScript faster directly… 👉 but it forces you to write code that the engine can actually optimize ✅ What TypeScript indirectly fixes Keeps functions monomorphic (stable types) Maintains predictable object shapes Reduces runtime surprises Helps the engine trust your code 💡 The mindset shift Earlier: “Will this work?” Now: “Will the engine optimize this?” 🤔 🔥 Final thought JavaScript performance isn’t magic 👉 It’s a contract between your code & the engine And TypeScript just makes sure you don’t break that contract 🚀 #JavaScript #TypeScript #V8 #Performance #Frontend #NodeJS
To view or add a comment, sign in
More from this author
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development