DEV Community

Md Imran Hossen Akash
Md Imran Hossen Akash

Posted on

Hidden Gem TypeScript Concepts to Supercharge Your Code

TypeScript is packed with features that make coding more robust and enjoyable. While many focus on types and interfaces, here are some lesser-known TypeScript concepts that can transform how you write code. Let’s dive into these hidden gems ⬇️!

1. never Type 💎

The never type represents values that never occur, like functions that throw errors or never return. It’s great for exhaustive checks in unions.
Example:

function fail(message: string): never {
 throw new Error(message);
}

type Shape = "circle" | "square";
function getShape(shape: Shape) {
 switch (shape) {
 case "circle": return "Round";
 case "square": return "Square";
 default: const _exhaustiveCheck: never = shape;
 }
}
Enter fullscreen mode Exit fullscreen mode

2. unknown Type 💎

Unlike any, the unknown type is a safer alternative for values with unknown types. You must narrow it before using, ensuring type safety.
Example:

function processData(data: unknown) {
 if (typeof data === "string") {
 console.log(data.toUpperCase());
 }
}
Enter fullscreen mode Exit fullscreen mode

3. Index Signatures 💎

Index signatures allow you to define types for objects with dynamic keys, perfect for scenarios like dictionaries or API responses.
Example:

interface Dictionary {

}
const scores: Dictionary = { math: 95, science: 88 };
console.log(scores["math"]);
Enter fullscreen mode Exit fullscreen mode

4. as const Assertion 💎

The as const assertion makes literals and objects read-only and narrows them to their exact values, enabling precise type inference.
Example:

const colors = ["red", "blue", "green"] as const;
type Color = typeof colors[number]; // "red" | "blue" | "green"
let favorite: Color = "red"; // Valid
favorite = "yellow"; // Error
Enter fullscreen mode Exit fullscreen mode

5. Keyof Type Operator 💎

The keyof operator extracts the keys of a type as a union of string literals, ideal for type-safe property access.
Example:

interface User {
 name: string;
 age: number;
}
type UserKeys = keyof User; // "name" | "age"
function getProperty(user: User, key: UserKeys) {
 return user[key];
}
Enter fullscreen mode Exit fullscreen mode

6. Type Inference with typeof 💎

TypeScript’s typeof operator lets you extract types from values, making it easier to reuse existing structures without manual type definitions.
Example:

const config = { apiKey: "abc123", timeout: 5000 };
type ConfigType = typeof config; // { apiKey: string; timeout: number }
const newConfig: ConfigType = { apiKey: "xyz789", timeout: 3000 }; // Valid
Enter fullscreen mode Exit fullscreen mode

Why These Matter 🤔
These concepts add precision and flexibility to your TypeScript projects, helping you handle edge cases, dynamic data, and complex logic with confidence. They’re especially useful for building scalable apps or working with unpredictable inputs.
Try these out in the TypeScript Playground or your next project. Which TypeScript feature has surprised you lately, or which of these are you eager to explore? Let’s geek out in the comments! 🚀

Top comments (0)