A few things here:

  1. You need to tell typescript what props to expect for the functionalComp. You do this by passing the props type to React.FC like React.FC<PropsTypeHere>. That makes your props definition look like this:
export interface DemoFCProps {
  itemArray: FCProps[],
  functionalComp: React.FC<FCProps>
}
  1. You should let react render this for your, rather than calling the function component directly. That makes using <MyComponent {...props} /> syntax.
export default function DisplayFCs(props : DemoFCProps) {
  const FunctionalComp = props.functionalComp
  return (
    <div>
      {
        props.itemArray.map(
          (item) => <FunctionalComp {...item} />
        )
      }
    </div>
  )
}

Playground


But this isn't all the way to your goal:

The hope was that this would allow me to call the DisplayFCs component with any component and array of props.

To do that, DisplayFCs needs to be generic. Let's start with it's props.

export interface DisplayFCsProps<
  FCProps extends { [key: string]: unknown }
> {
  itemArray: FCProps[],
  functionalComp: React.FC<FCProps>
}

Here FCProps is a generic type parameter. Whatever that type is, this constructs a type where it requires an array of that type, and a functional component that takes that type as props.

Then you need to use that props type from a generic functional component:

export default function DisplayFCs<
  Props extends { [key: string]: unknown }
>(props: DisplayFCsProps<Props>) {
  const FunctionalComp = props.functionalComp
  return (
    <div>
      {
        props.itemArray.map(
          (item) => <FunctionalComp {...item} />
        )
      }
    </div>
  )
}

Which now works as you would expect

function Person(props: { name: string, age: number }) {
  return <></>
}
const testPersons = <DisplayFCs
  functionalComp={Person}
  itemArray={[
    { name: 'Sue', age: 30 },
    { name: 'joe', age: 24 }
  ]}
/>


function Book(props: { title: string, author: string }) {
  return <></>
}
const testBooks = <DisplayFCs
  functionalComp={Book}
  itemArray={[
    { title: 'Necronomicon', author: 'Sue' },
    { title: 'The Expanse', author: 'Joe' }
  ]}
/>

Playground

Answer from Alex Wayne on Stack Overflow
🌐
React
legacy.reactjs.org › docs › components-and-props.html
Components and Props – React
To learn more about the reasoning behind this convention, please read JSX In Depth. Components can refer to other components in their output. This lets us use the same component abstraction for any level of detail. A button, a form, a dialog, a screen: in React apps, all those are commonly expressed as components. For example, we can create an App component that renders Welcome many times: function Welcome(props) { return <h1>Hello, {props.name}</h1>; } function App() { return ( <div> <Welcome name="Sara" /> <Welcome name="Cahal" /> <Welcome name="Edite" /> </div> ); }
🌐
React
react.dev › learn › passing-props-to-a-component
Passing Props to a Component – React
You can think of a component with a children prop as having a “hole” that can be “filled in” by its parent components with arbitrary JSX. You will often use the children prop for visual wrappers: panels, grids, etc. ... The Clock component below receives two props from its parent component: color and time. (The parent component’s code is omitted because it uses state, which we won’t dive into just yet.) ... export default function Clock({ color, time }) { return ( <h1 style={{ color: color }}> {time} </h1> ); }
Discussions

reactjs - Passing Props to a Functional Component that was also passed as a Param - Stack Overflow
In React with TypeScript, I am trying to pass a functional component and an array of props to said functional component as params to a container functional component that will display them. I am just More on stackoverflow.com
🌐 stackoverflow.com
reactjs - Do function components have props in React? - Stack Overflow
Can we use props in function components in React, and if then, how?I was trying to do console.log(this.props) above the return function in a function component but it kept giving me errors. More on stackoverflow.com
🌐 stackoverflow.com
React: Passing props to function components
I have a seemingly trivial question about props and function components. Basically, I have a container component which renders a Modal component upon state change which is triggered by user click o... More on stackoverflow.com
🌐 stackoverflow.com
Use Default Props of imported component in functional component
You can simply use default values when destructuring the prop object: function MyComponent(props) { const { prop1, prop2 = "defaultValue", prop3 } = props; // ... } See Destructuring Assignment#Default Value More on reddit.com
🌐 r/reactjs
8
3
April 28, 2024
🌐
freeCodeCamp
freecodecamp.org › news › react-components-jsx-props-for-beginners
React Functional Components, Props, and JSX – React.js Tutorial for Beginners
November 5, 2020 - A functional component is basically a JavaScript/ES6 function that returns a React element (JSX). According to React's official docs, the function below is a valid functional component: function Welcome(props) { return <h1>Hello, {props.name}</h1>; }
🌐
Ordinarycoders
ordinarycoders.com › blog › article › react-functional-components-state-props
React Functional Components: State, Props, and Lifecycle Methods
It has a mandatory render() method which returns a JSX element. Earlier, React was mostly class-based because “state” was only supported in class components. But in React 16.8, React hooks were introduced and these hooks changed everything in React development. With React hooks, “state” could be declared in functional components, thus, transforming them into stateful components from stateless components.
Top answer
1 of 3
1

A few things here:

  1. You need to tell typescript what props to expect for the functionalComp. You do this by passing the props type to React.FC like React.FC<PropsTypeHere>. That makes your props definition look like this:
export interface DemoFCProps {
  itemArray: FCProps[],
  functionalComp: React.FC<FCProps>
}
  1. You should let react render this for your, rather than calling the function component directly. That makes using <MyComponent {...props} /> syntax.
export default function DisplayFCs(props : DemoFCProps) {
  const FunctionalComp = props.functionalComp
  return (
    <div>
      {
        props.itemArray.map(
          (item) => <FunctionalComp {...item} />
        )
      }
    </div>
  )
}

Playground


But this isn't all the way to your goal:

The hope was that this would allow me to call the DisplayFCs component with any component and array of props.

To do that, DisplayFCs needs to be generic. Let's start with it's props.

export interface DisplayFCsProps<
  FCProps extends { [key: string]: unknown }
> {
  itemArray: FCProps[],
  functionalComp: React.FC<FCProps>
}

Here FCProps is a generic type parameter. Whatever that type is, this constructs a type where it requires an array of that type, and a functional component that takes that type as props.

Then you need to use that props type from a generic functional component:

export default function DisplayFCs<
  Props extends { [key: string]: unknown }
>(props: DisplayFCsProps<Props>) {
  const FunctionalComp = props.functionalComp
  return (
    <div>
      {
        props.itemArray.map(
          (item) => <FunctionalComp {...item} />
        )
      }
    </div>
  )
}

Which now works as you would expect

function Person(props: { name: string, age: number }) {
  return <></>
}
const testPersons = <DisplayFCs
  functionalComp={Person}
  itemArray={[
    { name: 'Sue', age: 30 },
    { name: 'joe', age: 24 }
  ]}
/>


function Book(props: { title: string, author: string }) {
  return <></>
}
const testBooks = <DisplayFCs
  functionalComp={Book}
  itemArray={[
    { title: 'Necronomicon', author: 'Sue' },
    { title: 'The Expanse', author: 'Joe' }
  ]}
/>

Playground

2 of 3
0

I could be wrong but I guess you just need to change your DisplayFCs's map:

      {
    // for each item in the array 
    props.itemArray.map(
    // spread that item's properties as props to the functional component
      (item)=>(<props.functionalComp {...item} />)
    )

  }
🌐
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 ...
Published   February 20, 2026
Find elsewhere
🌐
Robin Wieruch
robinwieruch.de › react-function-component
React Function Components - Robin Wieruch
December 23, 2024 - Props are the React Function Component’s parameters. Whereas the component can stay generic, we decide from the outside what it should render (or how it should behave). When rendering a component (e.g. Headline in App component), you can pass props as HTML attributes to the component.
🌐
GeeksforGeeks
geeksforgeeks.org › reactjs › how-to-access-props-inside-a-functional-component
How to access props inside a functional component? - GeeksforGeeks
July 23, 2025 - The below code describes how props are accessed inside the functional component ('display.js'). ... // App.js import React from "react"; import Display from "./components/display"; function App() { return ( <div> <Display greetings="Welcome" brandName="GeeksForGeeks" /> </div> ); } export default App;
🌐
Pluralsight
pluralsight.com › tech insights & how-to guides › tech guides & tutorials
Defining Props in React Function Component with Typescript | Pluralsight
Or you just want to have cleaner syntax within your component? For those cases, you can leverage a JavaScript syntax feature known as destructuring. This allows more flexibility in how you can define your props. // Using the same FullName interface from the last example function FunctionalComponent({firstName, lastName}:FullName){ // firstName // lastName }
🌐
Medium
medium.com › @PhilipAndrews › react-how-to-access-props-in-a-functional-component-6bd4200b9e0b
React: How To Access Props In A Functional Component | by Phil Andrews | Medium
September 22, 2020 - class Parent extends React.Component { render () { return( <Child eyeColor={'blue'} /> ) } }class Child extends React.Component { render () { return( <div style={{backgroundColor: this.props.eyeColor} /> ) } } This is React 101. However, you’ll eventually run into functional components.
🌐
Refine
refine.dev › home › blog › tutorials › react props explained with examples
React Props Explained with Examples | Refine
July 10, 2024 - I was following naming conventions, the props name tells us it's a prop/property passed to the Component. So, the "attributes" passed to the ReactComponent can be accessed as properties in the props argument. As we said before the props argument is an object. function ReactComponent(props) { typeof props; // "object" return null; }
🌐
React
legacy.reactjs.org › docs › render-props.html
Render Props – React
Here’s where the render prop comes in: Instead of hard-coding a <Cat> inside a <Mouse> component, and effectively changing its rendered output, we can provide <Mouse> with a function prop that it uses to dynamically determine what to render–a render prop. class Cat extends React.Component { render() { const mouse = this.props.mouse; return ( <img src="/cat.jpg" style={{ position: 'absolute', left: mouse.x, top: mouse.y }} /> ); } } class Mouse extends React.Component { constructor(props) { super(props); this.handleMouseMove = this.handleMouseMove.bind(this); this.state = { x: 0, y: 0 }; }
🌐
Medium
medium.com › @barbieri.santiago › building-functional-components-with-proptypes-in-react-25a45d24c3b6
Building Functional Components with PropTypes in React | by Santiago | Medium
June 1, 2024 - Functional components can accept props as arguments and render UI based on those props · import React from 'react'; import PropTypes from 'prop-types'; export const FirstApp = ({ title, subTitle, name }) => { return ( <> <h1> {title} </h1> ...
🌐
React TypeScript Cheatsheets
react-typescript-cheatsheet.netlify.app › function components
Function Components | React TypeScript Cheatsheets
// 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. const App = ({ message }: AppProps) => <div>{message}</div>; // You can choose to annotate the return type so an error is raised if you accidentally return some other type const App = ({ message }: AppProps): React.JSX.Element => <div>{message}</div>; // You can also inline the type declaration; eliminates naming the prop types, but looks repetitive const App = ({ message }: { message: string }) => <div>{message}</div>; // Alternatively, you can use `React.FunctionComponent` (or `React.FC`), if you prefer.
🌐
Groove Technology
groovetechnology.com › home › blog › technologies › reactjs functional components: everything you need to know
ReactJS Functional Components: A Complete Overview
September 26, 2024 - Functional components receive input data through props, which are objects containing key-value pairs. Once the component receives props, it processes them and returns a JSX element that describes the component’s structure and content.
🌐
GeeksforGeeks
geeksforgeeks.org › reactjs › reactjs-props
ReactJS Props - Set 1 - GeeksforGeeks
Functional components accept props as parameters and can be accessed directly. Example 1: This example demonstrates how to pass and access props in a React class component ... // index.js import React from "react"; import ReactDOM from ...
Published   July 11, 2025
🌐
React
react.dev › reference › react › Component
Component – React
If you’d like, you can reuse some code between static getDerivedStateFromProps and the other class methods by extracting pure functions of the component props and state outside the class definition. Implementing static getDerivedStateFromProps in a class component is equivalent to calling the set function from useState during rendering in a function component. To define a React component as a class, extend the built-in Component class and define a render method: ... React will call your render method whenever it needs to figure out what to display on the screen. Usually, you will return some JSX from it.