TS2747
TypeScriptERRORNotableTypeHIGH confidence

'X' components don't accept text as child elements. Text in JSX has the type ...

Production Risk

Build will fail; resolve before shipping.

What this means

A type-checking error (TS2747): 'X' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of 'X' is 'X'.. This diagnostic is emitted by the TypeScript compiler when 'X' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of 'X' is 'X'..

Why it happens
  1. 1JSX syntax used without enabling '--jsx' compiler option
  2. 2Missing React or JSX runtime import
How to reproduce

TypeScript compiler reports TS2747 during type checking.

trigger — this will error
trigger — this will error
// Triggers TS2747
// 'X' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of 'X' is 'X'.

expected output

error TS2747: 'X' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of 'X' is 'X'.

Fix

Enable JSX in tsconfig.json

WHEN Using JSX syntax in TypeScript files

Enable JSX in tsconfig.json
// tsconfig.json
{
  "compilerOptions": {
    "jsx": "react-jsx"  // or "react", "preserve", etc.
  }
}

Why this works

The '--jsx' option tells TypeScript how to transform JSX; choose 'react-jsx' for React 17+ or 'react' for older versions.

Sources
Official documentation ↗

TypeScript Compiler Diagnostics

Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev

← All TypeScript errors