6

I'm adding typescript to my react-native app,

in App.tsx

I'm getting this error on Cannot find name React$Node on

const App: () => React$Node = () => {
 ...
}
1
  • please accept the appropriate answer to your question. Commented Feb 5, 2021 at 4:37

1 Answer 1

7

I'm unsure of the syntax you're using, and not sure where React$Node comes from. From my experience, the correct typing and syntax should be React.ReactNode or React.ReactElement. For example:

import React from 'react'

const App = (): React.ReactElement => { 

  return (
    // component code
  )
}

As for the difference between ReactNode and ReactElement (because I wasn't entirely sure), I found ford04's answer useful - quoted here:

ReactElement and JSX.Element are the result of invoking React.createElement directly or via JSX transpilation. It is an object with type, props and key. [JSX.Element]

ReactNode is used as return type for render() in class components. It also is the default type for children attribute with [PropsWithChildren]

Sign up to request clarification or add additional context in comments.

1 Comment

I've just looked up React$Node - it's a Flow type. So the corresponding type for TypeScript will be ReactNode (or React.ReactNode if you don't import it). Make sure you install @types/react and @types/react-native.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.