Полезные приёмы TypeScript

Несколько приёмов TypeScript, которые сделают ваш код лучше

typescriptразработка

TypeScript — мощный инструмент, но многие используют лишь малую часть его возможностей.

Discriminated Unions

Один из самых полезных паттернов:

type Result<T> =
  | { success: true; data: T }
  | { success: false; error: string }
 
function handleResult(result: Result<string>) {
  if (result.success) {
    console.log(result.data) // TypeScript знает что data есть
  } else {
    console.error(result.error) // TypeScript знает что error есть
  }
}

Const Assertions

Используйте as const для литеральных типов:

const ROUTES = {
  home: "/",
  blog: "/blog",
  about: "/about",
} as const
 
type Route = typeof ROUTES[keyof typeof ROUTES]
// Route = "/" | "/blog" | "/about"

Template Literal Types

Генерация типов из строк:

type EventName = "click" | "focus" | "blur"
type Handler = `on${Capitalize<EventName>}`
// Handler = "onClick" | "onFocus" | "onBlur"

Эти приёмы помогут писать более типобезопасный и читаемый код.