TGViewer
Заметки про React Заметки про React @ru_react_notes · 3.44K subscribers
Post #487 3.09K
Чистый код React с TypeScript

В своей статье Робин Везер объясняет, как правильно типизировать компоненты React, использовать встроенные типы React, обрабатывать пропсы и дочерние элементы, управлять стейтом с помощью хуков, работать с рефами и обрабатывать события.

Несколько примеров, которые привел автор статьи:

✨ Передача компонентов в пропсах. Можно указать требуемые пропсы у передаваемых компонентов, а определить компонент через генерик тип ComponentType:


import { ComponentType } from 'react'

type ProductTileProps = {
title: string
description?: string
}

type Props = {
render: ComponentType<ProductTileProps>
}

function ProductTile({ render }: Props) {
const props = {…}

return render(props)
}


✨ Для определения рефов через пропсы используйте генерик тип RefObject:


import { RefObject } from 'react'

type Props = {
anchor: RefObject<HTMLElement>
}

function Popover({ anchor }: Props) {
// position component according to the anchor ref
}


✨ MouseEvent и React.MouseEvent. MouseEvent - это нативное JavaScript событие, а React.MouseEvent - это синтетическое событие, которое используется в колбеках React. У них много общего, и их часто можно использовать как взаимозаменяемые, но версия React также учитывает несовместимость браузеров и включает некоторые специфичные для React методы, такие как persist().

https://weser.io/blog/clean-react-with-typescript
Robin Weser's Blog Clean React with TypeScript Exploring common React features and patterns and how to seamlessly integrate them with TypeScript
  • 👎 11
  • 👍 9
  • ❤ 1
More from @ru_react_notes
  1. Jun 24, 2025Реактивность – это легко Стандартный useContext заставляет обновляться все компоненты-потр…
  2. Jun 17, 2025Остерегайтесь скрытых проблем при работе с search params Типо-безопасность — это только ве…
  3. Jun 4, 2025Почему Error Boundary, а не просто try/catch для компонентов В React нельзя использовать t…
  4. May 29, 2025Анонс TypeScript Native Вышла превью версия TypeScript написанная на Go. Ее можно установи…
  5. May 27, 2025Управление фокусом в React с помощью flushSync Установить фокус на инпуте сразу в React мо…
  6. May 15, 2025TanStack DB TanStack представила новую библиотеку – TanStack DB – реактивный клиентский ст…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →