Europe/Kyiv
Posts

Декларація функції та функціональний вираз (arrow function) вибір між ними в TypeScript/React.

June 13, 2025

Software development illustration
export default function MyComponent({ content }: FC<MyComponentProps>) {  
  
  return <div>{content}</div>;
}

Плюси:
  • Класичний синтаксис функцій — краще читається в логах стек-трейсів та дебагу.
  • Підтримує функціональне підняття (hoisting).
  • Часто вважається більш "надійним" для публічних API компонентів (особливо в бібліотеках).
Мінус:
  • Тип FC<MyComponentProps> тут використано в місці, де TypeScript не чекає його (на параметрах, а не на самій функції), що може бути не зовсім коректно. Краще:
export default function MyComponent({ content }: MyComponentProps) {
 ...
}
const MyComponent: FC<MyComponentProps> = ({ content }) => {

  return <div>{content}</div>;
};
Плюси:
  • Чітко видно тип компонента (FC<...>).
  • Легко інтегрується з хуками або вкладеними функціями.
  • Більш узгоджено зі стилем функціонального програмування.
Мінус:
  • Немає підняття функції (hoisting), тому її не можна викликати до оголошення.
Якщо ти створюєш звичайний React-компонент — варіант 2 (arrow function) є більш популярним у сучасних проектах. Проте якщо важлива читабельність у логах, дебаг, або якщо пишеш бібліотеку, краще використовувати варіант 1 (function declaration).
type MyComponentProps = { content: string };

export default function MyComponent({ content }: MyComponentProps) {

return <div>{content}</div>;
}