Definitelytyped: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЛ ReactNode рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдмрдЪреНрдЪреЛрдВ рдХреЛ ReactElement рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЬреБрд▓ре░ 2017  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: DefinitelyTyped/DefinitelyTyped

  • [x] рдореИрдВрдиреЗ @types/react рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реБрдИрдВред
  • [x] рдореИрдВрдиреЗ tsc рдХреЗ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред https://www.npmjs.com/package/typescript
  • [x] рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ рдЬреЛ StackOverflow рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реИред (рдХреГрдкрдпрд╛ рд╡рд╣рд╛рдВ рдХреЛрдИ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ)ред
  • [x] [рдЙрд▓реНрд▓реЗрдЦ] (https://github.com/blog/821-mention-somebody-the-re-notified) рд▓реЗрдЦрдХ (рджреЗрдЦреЗрдВ Definitions by: рдореЗрдВ index.d.ts ) рддрд╛рдХрд┐ рд╡реЗ рдХрд░ рд╕рдХреЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛.

    • рд▓реЗрдЦрдХ: @ericanderson @onigoetz @tkrotoff @digiguru @morcerf @johnnyreilly @bbenezech @pzavolinsky @DovydasNvickas

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХ

const SFC: React.StatelessComponent = (props) => props.children;

class C extends React.Component {
  render() {
    return this.props.children;
  }
}

рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджреЗрдВ

Type '(props: { children?: ReactNode; }) => ReactNode' is not assignable to type 'StatelessComponent<{}>'.
  Type 'ReactNode' is not assignable to type 'ReactElement<any> | null'.
    Type 'undefined' is not assignable to type 'ReactElement<any> | null'.

Class 'C' incorrectly extends base class 'Component<{}, {}>'.
  Types of property 'render' are incompatible.
    Type '() => ReactNode' is not assignable to type '() => false | Element | null'.
      Type 'ReactNode' is not assignable to type 'false | Element | null'.
        Type 'undefined' is not assignable to type 'false | Element | null'.

рдпрджрд┐ рдЖрдк children рдХреЛ Element рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рджрд╛рддрд╛ рдШрдЯрдХ рдмрдирд╛рддреЗ рд╕рдордп children рд▓реМрдЯрд╛рдирд╛ рдХрд╛рдлреА рдЖрдо рд╣реИ рдЬреЛ рдХрд┐ context рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП children рдХреЛ React.Fragment рдореЗрдВ рд▓рдкреЗрдЯ рд░рд╣рд╛ рд╣реВрдВред

рд╕рднреА 18 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ index.d.ts . рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реБрдзрд╛рд░реЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА

-        render(): JSX.Element | null | false;
+        render(): ReactNode;

-        (props: P & { children?: ReactNode }, context?: any): ReactElement<any> | null;
+        (props: P & { children?: ReactNode }, context?: any): ReactNode;

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╣рд░ рдЬрдЧрд╣ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ, рдЬрдм рдореИрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред

TypeScript compile error: JSX element type 'ReactNode' is not a constructor function for JSX elements.

рдирд╣реАрдВ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд▓рдд рд╣реИред рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдХрд╣реАрдВ рднреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рдд: рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдПрдХ рд╣реА рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИред
рдХреЗрд╡рд▓ рдлрд╛рдЗрдмрд░ рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯ 16 рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░реЗрдбрдХреНрд╕ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реЗрдЦрдХ рдиреЗ рдкрддрд▓реЗ рд░реИрдкрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред (рдХреЗрд╡рд▓ рддрддреНрд╡реЛрдВ рдореЗрдВ рдЪрд╛рдЗрд▓реНрдбрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП), рдЬреИрд╕рд╛ рдХрд┐ https://egghead.io/lessons/ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд░реЗрдбрдХреНрд╕-рдкрд╛рд╕рд┐рдВрдЧ-рдж-рд╕реНрдЯреЛрд░-рдбрд╛рдЙрди-рдирд┐рд╣рд┐рдд-рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ-рд╕рдВрджрд░реНрдн

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдЖрдкрдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХрд╛рдо this.props.children рдХреЛ React.Children.only(this.props.children) $ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрдирд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡ рд╣реИрдВ рддреЛ рдпрд╣ рдлреЗрдВрдХ рджреЗрдЧрд╛

рдареАрдХ рд╣реИ, рдЖрдк React.Children.only рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди ReactNode рдФрд░ ReactElement рджреЛрдиреЛрдВ $ this.props.children рдХреЗ рдорд╛рдиреНрдп рдорд╛рди рд╣реИрдВред

const Title = props => <h1>{props.children}</h1>;
<Title>Woah</Title>

рд╡реИрдз рдФрд░ рдЙрдЪрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рд╣реИред

рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 16 рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯреАрдПрд╕ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ children: JSX.Element[]; рдХрд░реЗрдВ

рдореЗрд░реЗ рдЕрдм рддрдХ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ReactNode рдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

const Id: React.SFC<{}> = (props) => props.children

const App = ()= > <Id>This should work but instead fails</Id>

рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ @types/react рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛?

рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдореИрдВ рд░рд┐рдПрдХреНрдЯ рдЪрд┐рд▓реНрдбреНрд░рди рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣рд╛ рд╣реВрдБ

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП children рдХреЛ React.Fragment рдореЗрдВ рд▓рдкреЗрдЯ рд░рд╣рд╛ рд╣реВрдВред

рдЙрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ children рдХреЛ React.Fragment рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рд╕реЗ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реМрднрд╛рдЧреНрдп рдорд┐рд▓рд╛ рд╣реИ

return (children as React.ReactElement);

return <>{foo(}</>; рдкреВрд░реА рд░рд╛рддред <> рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЯреАрдПрд▓; рдбреЙ:

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдЪрдУрд╕реА рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдШрдЯрдХ рдореЗрдВ рдкреНрд░реЛрдк рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ return children; рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ return <>{children}</>; ред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:

рдпрд╣рд╛рдБ HOC рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

export interface ExtraProps {
  extraProp1: string;
}

export const withExtraProps = <P extends object>(Component: React.ComponentType<P>) => {
  return class extends React.Component<Omit<P, keyof ExtraProps>> {
    render() {
      const extraProps = {
        extraProp1: 'test'
      };

      return (
        <Component {...this.props as P} {...extraProps} />
      )
    }
  }
}

рдпрд╣рд╛рдБ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

interface ComponentProps extends ExtraProps {
  children?: React.ReactNode;
  loadingComponent?: ReactElement;
}

export function ExampleComponent(props: ComponentProps) {
  const { children, loadingComponent } = props;

  const [loading, setLoading] = useState(false);

  useEffect(() => {
    const fetchData = async () => {
      setLoading(true);
      await someAsyncCall();
      setLoading(false);
    }

    fetchData();
  });

  if (loading) {
    return loadingComponent || null;
  }

  return children;
}

// This line errors:
export const FeatureFlag = withExtraProps(ExampleComponent);

рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Argument of type '(props: ComponentProps) => {} | null | undefined' is not assignable to parameter of type 'ComponentType<ComponentProps>'.
  Type '(props: ComponentProps) => {} | null | undefined' is not assignable to type 'FunctionComponent<ComponentProps>'.
    Type '{} | null | undefined' is not assignable to type 'ReactElement<any, string | ((props: any) => ReactElement<any, string | ... | (new (props: any) => Component<any, any, any>)> | null) | (new (props: any) => Component<any, any, any>)> | null'.
      Type 'undefined' is not assignable to type 'ReactElement<any, string | ((props: any) => ReactElement<any, string | ... | (new (props: any) => Component<any, any, any>)> | null) | (new (props: any) => Component<any, any, any>)> | null'.

рдЕрдЧрд░ рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдореЗрдВ ReactElement | null рдХрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдПрдЪрдУрд╕реА рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬрд╣рд╛рдВ рдореИрдВ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

export function ExampleComponent(props: ComponentProps): ReactElement | null {
  ...
  ...
  return children; // Type 'ReactNode' is not assignable to type 'ReactElement<any, string | ((props: any) => ReactElement<any, string | ... | (new (props: any) => Component<any, any, any>)> | null) | (new (props: any) => Component<any, any, any>)> | null'.

}

рдпрд╣рд╛рдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ return <>{children}</>; рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдереВрд▓ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ _exact_ @kyrstenkelly рдХреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдПрдХ HOC рдлрд╝рдВрдХреНрд╢рди рдХреЛ React.FC рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

<> children(...) </> рдлрд┐рдХреНрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЕрднреА рддрдХ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рд╕рд╛рде рд╣реА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ! рд╡рд░реНрддрдорд╛рди рдореЗрдВ React.Fragment рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рд▓рдкреЗрдЯрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╕рдорд╛рдзрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ

interface IIntlMessageProps {
    id: string;
    valuesGiven?: {[key:string]:string};
}

// this doesn't work - -- TS2769 Type 'null' is not assignable to type '(nodes:ReactNodeARray) => ReactNode' | ... | undefined
export const IntlMessage: React.FC<IIntlMessageProps> = (props) => {
    return (
        <FormattedMessage id={props.id} values={props.valuesGiven}>
            {props.children}
        </FormattedMessage>
    )
};
//Nope -- TS2769 Type 'Element' is not assignable to type '(nodes:ReactNodeARray) => ReactNode'
export const IntlMessage: React.FC<IIntlMessageProps> = (props) => {
    return (
        <FormattedMessage id={props.id} values={props.valuesGiven}>
            <React.Fragment>{props.children}</React.Fragment>
        </FormattedMessage>
    )
};

// Nope -- TS2769 Type 'Element' is not assignable to type '(nodes:ReactNodeARray) => ReactNode'
export const IntlMessage: React.FC<IIntlMessageProps> | null = (props) => {
    return (
        <FormattedMessage id={props.id} values={props.valuesGiven}>
            <>{props.children}</>
        </FormattedMessage>
    )
};

// Nope -- TS2769 Type '{}' is not assignable to type '(nodes:ReactNodeARray) => ReactNode'
export const IntlMessage: React.FC<IIntlMessageProps> = (props) => {
    return (
        <FormattedMessage id={props.id} values={props.valuesGiven}>
            {props.children ? props.children : undefined}
        </FormattedMessage>
    )
};


рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╕рд▓рд╛рд╣ рджреА рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ ... :( рдХреЛрдИ рд╕реБрд░рд╛рдЧ?

рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

import React from 'react'

const Something: React.FC = ({ children }) => (
 <> { children } </>
)

рдпрд╣ Type '({ children }: { children?: ReactNode; }) => ReactNode' is not assignable to type 'FunctionComponent рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдЧрд╛ред

рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдореИрдВ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдлреНрд▓реЛ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдФрд░ рдЧреИрд░-рдЖрджрд░реНрд╢ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреБрдХрдбрд╝реЗ рдШрдЯрдХ рдкреЗрдбрд╝ рдХреЛ рдЧрд╣рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛/рдЖрд╡рд░рдг рдШрдЯрдХреЛрдВ (рдХреЗрд╕-рдЗрди-рдкреЙрдЗрдВрдЯ: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░) рдореЗрдВред React.ReactElement рдХреЛ рдХрд╛рд╕реНрдЯ рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд╛рд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдЯрд╛рдЗрдкрдЪреЗрдХрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рд╢рд╛рдЦрд╛ рд╣реИ, рдореИрдВ рд╢рдкрде рд▓реЗ рд╕рдХрддрд╛ рдерд╛ рдореИрдВрдиреЗ рдорджрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рдерд╛, рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛ ...

рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЯрд╛рдЗрдк рдХреЛ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ ReactText , ReactPortal , boolean , null , рдФрд░ undefined рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред ReactElement рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдФрдЪрд┐рддреНрдп рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

fasatrix picture fasatrix  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JudeAlquiza picture JudeAlquiza  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

svipas picture svipas  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stevermeister picture stevermeister  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jgoz picture jgoz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ