2024-07-23
2415
#typescript
Paul Cowan
2066
Jul 23, 2024 ⋅ 8 min read

A complete guide to const assertions in TypeScript

Paul Cowan Contract software developer.

Recent posts:

Using tsup To Bundle Your TypeScript Package

Using tsup to bundle your TypeScript package

Learn how to efficiently bundle your TypeScript package with tsup. This guide covers setup, custom output extensions, and best practices for optimized, production-ready builds.

Muhammad Ali
Feb 20, 2025 ⋅ 7 min read
Building A Telegram Bot With GrammY

Building a Telegram bot with grammY

Build a Telegram bot with Node.js and grammY to automate text, audio, and image responses using the Telegram API and Google Gemini.

Amazing Enyichi Agu
Feb 20, 2025 ⋅ 7 min read
Styling with the CSS box-shadow Property

Styling with the CSS box-shadow property

Use the `box-shadow` CSS property to create layered, neon, and neumorphic shadows in this detailed tutorial.

Oscar Jite-Orimiono
Feb 19, 2025 ⋅ 9 min read
Using Typescript Enums In React Native Web

A complete guide to TypeScript enums in React Native

Learn everything you need to know about how to use React Context — a great feature that enables you to manage and share state across the React application.

Kayode Adeniyi
Feb 19, 2025 ⋅ 8 min read
View all posts

5 Replies to "A complete guide to <code>const</code> assertions in TypeScript"

  1. The example in your conclusion is wrong: z and a would not be read-only since those are the keys for nested object. This is currently the behavior of “as const” syntax.

  2. that isn’t true, this is the resultant type:

    “`
    let obj: {
    readonly x: 10;
    readonly y: readonly [20, 30];
    readonly z: {
    readonly a: {
    readonly b: 42;
    };
    };
    }
    “`
    and this error happens when you try to modify z o a
    “`
    Cannot assign to ‘z’ because it is a read-only property.(2540)
    “`

  3. The example with redux actions is striking. With interfaces it’s clear and reads nicely, with ‘const’ assertion, it becomes more…implicit and easier to overlook. IMO interfaces are better for this purpose. The goal is not to write maintainable code, not as little code as possible.
    But the purpose of the assertion is clear when it comes to literals.
    Nice article, thanks!

Leave a Reply