Thanks all for the answers. They are correct but I was looking for a more detailed version. I did some more research and found this on React+TypeScript Cheatsheets on GitHub.

Function Components
These can be written as normal functions that take a props argument and return a JSX element.

type AppProps = { message: string }; /* could also use interface */

const App = ({ message }: AppProps) => <div>{message}</div>;

What about React.FC/React.FunctionComponent? You can also write components with React.FunctionComponent (or the shorthand React.FC):

const App: React.FC<{ message: string }> = ({ message }) => (
  <div>{message}</div>
);

Some differences from the "normal function" version:

It provides typechecking and autocomplete for static properties like displayName, propTypes, and defaultProps - However, there are currently known issues using defaultProps with React.FunctionComponent. See this issue for details - scroll down to our defaultProps section for typing recommendations there.

It provides an implicit definition of children (see below) - however there are some issues with the implicit children type (e.g. DefinitelyTyped#33006), and it might be considered a better style to be explicit about components that consume children, anyway.

const Title: React.FunctionComponent<{ title: string }> = ({
  children,
  title
}) => <div title={title}>{children}</div>;

In the future, it may automatically mark props as readonly, though that's a moot point if the props object is destructured in the parameter list.

React.FunctionComponent is explicit about the return type, while the normal function version is implicit (or else needs additional annotation).

In most cases, it makes very little difference which syntax is used, but the React.FC syntax is slightly more verbose without providing clear advantage, so precedence was given to the "normal function" syntax.

Answer from Kuldeep Bora on Stack Overflow
🌐
React TypeScript Cheatsheets
react-typescript-cheatsheet.netlify.app › function components
Function Components | React TypeScript Cheatsheets
These can be written as normal functions that take a props argument and return a JSX element. // Declaring type of props - see "Typing Component Props" for more examples type AppProps = { message: string; }; /* use `interface` if exporting so that consumers can extend */ // Easiest way to declare a Function Component; return type is inferred.
🌐
DEV Community
dev.to › wpreble1 › typescript-with-react-functional-components-4c69
TypeScript with React Functional Components - DEV Community
July 16, 2020 - In this blog, I’ll cover the basics of incorporating TypeScript into the popular front-end framework (er… library) React with a focus on functional components and hooks.
Discussions

TypeScript React.FC<Props> confusion
I wonder what's the difference ... of React component? ... Answered here stackoverflow.com/questions/44133420/… It's more about properties you can find in React.FC. ... Thanks all for the answers. They are correct but I was looking for a more detailed version. I did some more research and found this on React+TypeScript Cheatsheets on GitHub. Function Components ... More on stackoverflow.com
🌐 stackoverflow.com
Function component props with typescript
Yes. Defining an interface separately, makes it reusable and easier to read and move. More on reddit.com
🌐 r/reactjs
18
3
January 18, 2023
Is React.FC not recommended? what are other alternative and recommended way?
React.FC is unnecessary. Doubly so now that the React 18 types no longer automatically include childrenas a prop. The simplest approach is: interface MyComponentProps { name: string; // whatever else here } function MyComponent({name}: MyComponentProps) { // rendering logic here } See https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/function_components/ for a more extensive section explaining why React.FC should mostly be avoided. More on reddit.com
🌐 r/reactjs
37
36
August 9, 2022
React.FC vs JSX.Element
Per the arguments in this issue, React.FC should generally be avoided: https://github.com/facebook/create-react-app/pull/8177 On top of that, TS infers that your component is already returning a JSX.Element, so you don't even need to declare that return type. Just do function HelloWorld({name}: HWProps) {}, and let TS infer the return type. More on reddit.com
🌐 r/reactjs
85
104
August 6, 2020
🌐
JavaScript in Plain English
javascript.plainenglish.io › how-to-develop-react-functional-components-with-typescript-12c2cfbb271d
How to Develop React Functional Components with TypeScript | JavaScript in Plain English
August 30, 2022 - 4 ways to define React functional components with TypeScript: Using React.FC, JSX.Element, React.PropsWithChildren, & defining the full type directly.
🌐
Pluralsight
pluralsight.com › tech insights & how-to guides › tech guides & tutorials
Defining Props in React Function Component with Typescript | Pluralsight
We cover several different methods, including destructuring and React.FC. ... This guide will help you properly define the props entering your function components. You'll also learn when defining props as a class or interface type is best and how to provide default values to optional props. TypeScript extends JavaScript features in powerful ways, including the ability to define the structure of an object.
🌐
React
react.dev › learn › typescript
Using TypeScript – React
Writing TypeScript with React is very similar to writing JavaScript with React. The key difference when working with a component is that you can provide types for your component’s props.
Top answer
1 of 5
217

Thanks all for the answers. They are correct but I was looking for a more detailed version. I did some more research and found this on React+TypeScript Cheatsheets on GitHub.

Function Components
These can be written as normal functions that take a props argument and return a JSX element.

type AppProps = { message: string }; /* could also use interface */

const App = ({ message }: AppProps) => <div>{message}</div>;

What about React.FC/React.FunctionComponent? You can also write components with React.FunctionComponent (or the shorthand React.FC):

const App: React.FC<{ message: string }> = ({ message }) => (
  <div>{message}</div>
);

Some differences from the "normal function" version:

It provides typechecking and autocomplete for static properties like displayName, propTypes, and defaultProps - However, there are currently known issues using defaultProps with React.FunctionComponent. See this issue for details - scroll down to our defaultProps section for typing recommendations there.

It provides an implicit definition of children (see below) - however there are some issues with the implicit children type (e.g. DefinitelyTyped#33006), and it might be considered a better style to be explicit about components that consume children, anyway.

const Title: React.FunctionComponent<{ title: string }> = ({
  children,
  title
}) => <div title={title}>{children}</div>;

In the future, it may automatically mark props as readonly, though that's a moot point if the props object is destructured in the parameter list.

React.FunctionComponent is explicit about the return type, while the normal function version is implicit (or else needs additional annotation).

In most cases, it makes very little difference which syntax is used, but the React.FC syntax is slightly more verbose without providing clear advantage, so precedence was given to the "normal function" syntax.

2 of 5
93

React.FC is not the preferable way to type a React component, here's a link.

I personally use this type:

const Component1 = ({ prop1, prop2 }): JSX.Element => { /*...*/ }

Short list of React.FC cons:

  1. Provides an implicit definition of children, even if your component doesn't need to have children. That might cause an error.
  2. Doesn't support generics.
  3. Doesn't work correctly with defaultProps.
🌐
DEV Community
dev.to › elhamnajeebullah › react-typescript-what-is-reactfc-and-why-should-i-use-it-4029
React & TypeScript: What is React.FC and Why should i use it? - DEV Community
January 9, 2023 - In this example, MyComponent is a function component that accepts props of type Props, which includes a name string, an age number, and an onClick function. The component is defined using the React.FC type, which allows TypeScript to check that the component is being used correctly and provides type information for the component's props.
Find elsewhere
🌐
React
legacy.reactjs.org › docs › components-and-props.html
Components and Props – React
However, if you integrate React into an existing app, you might start bottom-up with a small component like Button and gradually work your way to the top of the view hierarchy. Don’t be afraid to split components into smaller components. ... function Comment(props) { return ( <div className="Comment"> <div className="UserInfo"> <img className="Avatar" src={props.author.avatarUrl} alt={props.author.name} /> <div className="UserInfo-name"> {props.author.name} </div> </div> <div className="Comment-text"> {props.text} </div> <div className="Comment-date"> {formatDate(props.date)} </div> </div> ); }
🌐
Echobind
echobind.com › post › react-with-typescript-components-as-function-declarations-vs-function-expressions
TypeScript: Function Declarations vs. Function Expressions
December 13, 2019 - In the other instance, when we type a React component as a function declaration (i.e. function MyComponent), we ask the same thing. This time, we’re annotating the function return type. This explains why we can’t use the same type! We instead need to tell TypeScript, “Hey!
🌐
CodiLime
codilime.com › blog › software development › frontend › a guide to react functional components with typescript
A guide to React functional components with TypeScript
October 9, 2023 - However, it's essential to note that there might be an initial learning curve if you are not familiar with TypeScript. Once you become accustomed to it, the benefits will outweigh the initial investment of time and effort. Let’s focus on typing the main building brick of any React application - the component. I assume you’re already familiar with the good old `FunctionalComponent` or `FC`. It’s a basic type provided by React.
🌐
GitHub
gist.github.com › treyhuffine › 9259ae0dcf773fad8f9d3294cdb9dbf7
React function component with TypeScript · GitHub
React function component with TypeScript. GitHub Gist: instantly share code, notes, and snippets.
🌐
FullStack
fullstack.com › labs › resources › blog › typescript-react-component-interfaces-overloading-by-props
TypeScript/React Component Interfaces Overloading by ...
How do we infer our component interface from the value of our as property? To do this we can first define a function type interface. TypeScript allows us to create interfaces describing the shape and overloads of a function.
🌐
Robin Wieruch
robinwieruch.de › react-function-component
React Function Components - Robin Wieruch
December 23, 2024 - Note that you have to install the ... learn more about PropTypes in React, check out the official documentation. These days I’d recommend using TypeScript instead of prop-types. In addition, there are default props for a Function Component....
🌐
Flaming Codes
flaming.codes › posts › function components vs react.fc in typescript: a complete guide
Function Components vs React.FC in TypeScript: A Complete Guide
May 29, 2025 - It looks more "official," and if ... with fine print. React.FC (short for React.FunctionComponent) is a helper type that describes a function component....
🌐
Kent C. Dodds
kentcdodds.com › blog › how-to-write-a-react-component-in-typescript
How to write a React Component in TypeScript
March 4, 2021 - For functions, you need to consider the types coming in and the types going out. Let's start with the input: props. To start, let's go with a simple type for the props (we'll improve it later): type CalculatorProps = { left: number operator: string right: number } With that, let's try some options for applying that type to the props object in our React Component.
🌐
Medium
blog.variant.no › a-better-way-to-type-react-components-9a6460a1d4b7
The Better Way to Type React Components | by Mikael Brevik | Variant
December 9, 2020 - For some reason when I was learning TypeScript and React almost all blog posts, tutorials and examples were using React.FC to type up function components. And it makes sense in a way. You have a built-in type in the DefinitlyTyped React types that says React.FunctionComponent.
🌐
GeeksforGeeks
geeksforgeeks.org › reactjs › reactjs-functional-components
ReactJS Functional Components - GeeksforGeeks
Props: Functional components receive input data through props, which are objects containing key-value pairs. Processing Props: After receiving props, the component processes them and returns a JSX element that defines the component's structure and content. Virtual DOM: When the component is rendered, React creates a virtual DOM tree that represents the current state of the application.
Published   February 20, 2026
🌐
Medium
medium.com › illumination-curated › setting-children-props-in-react-functional-component-typescript-2417d7669f49
Setting children props in React functional component - typescript
July 23, 2022 - function Button (props) { return <button>{props.children}</button> } This property can easily be utilized in javascript using the code · <Button>{/* add the child widget here */} <some child component/></Button> And there you have it. You have correctly set the children props for a custom component in React javascript but with typescript doing the same raises errors.
🌐
DhiWise
dhiwise.com › post › react-function-components-and-typescript-mastering-the-advanced-techniques
React Function Components and Advanced TypeScript Techniques
April 30, 2025 - While class components will still work in React, function components are likely to be the standard going forward. ... React is the most popular JavaScript library for building user interfaces, and TypeScript is a powerful tool for adding type safety to JavaScript...