Typescript: JSX рдореЗрдВ "рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ" рдХреЛрдб рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ '// @ ts-ign'

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЕрдХреНрддреВре░ 2018  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг: 3.2.0-dev.20181004


рдЦреЛрдЬ рд╢рдмреНрдж:

disableJsDiagnostics
JSX
рдХреЛрдб рдареАрдХ рдХрд░реЗрдВ
рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ
рд╕рднреА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ '@ ts-ign' рдЬреЛрдбрд╝реЗрдВ

рдХреЛрдб

// MyComponent.jsx
// @ts-check
import React from "react";

class MyComponent extends React.Component {
  render() {
    return (
      <div>
        // @ts-ignore
        {doesNotExist}
      </div>
    );
  }
}

export default MyComponent;

Ignore this error message рдпрд╛ Add '@ts-ignore' to all error messages рдХреЛрдб рдлрд┐рдХреНрд╕ рдХрд░рдирд╛ // @ts-ignore рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рдХ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

рдкрд░рдВрддреБ,

<div>
  // @ts-ignore
  {doesNotExist}
</div>

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ // @ts-ignore рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░:

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ {/* @ts-ignore */} рдпрд╛ {/* // @ts-ignore */} рдХреЛ рд╡реИрдз рдЕрдирджреЗрдЦрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

рддреЛ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдореИрдВ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реИ

<div>
  {/* 
  // @ts-ignore */}
  {doesNotExist}
</div>

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░:

// MyComponent.jsx
// @ts-check
import React from 'react';

class MyComponent extends React.Component {
  render() {
    return (
      <div>
        // @ts-ignore
        {doesNotExist}
      </div>
    );
  }
}

export default MyComponent;

рдЬрд╣рд╛рдВ // @ts-ignore рдЧрд▓рддреА рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

https://github.com/Microsoft/TypeScript/issues/25240

Bug JSTSX Quick Fixes

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

(рдЬрдм рддрдХ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ

{/* 
  // @ts-ignore */}

рдареАрдХ рд╣реИ?)

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

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдЬрдм рддрдХ рд╣рдо рдирдП рджрдорди рдлреЙрд░реНрдо (рдпрд╛рдиреА рдЗрдирд▓рд╛рдЗрди) рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдлрд┐рдХреНрд╕ рдХреНрд╡рд┐рдХрдлрд┐рдХреНрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдм рдПрдХ рд╡реИрдз рджрдорди рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

(рдЬрдм рддрдХ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ

{/* 
  // @ts-ignore */}

рдареАрдХ рд╣реИ?)

рдирдП рджрдорди рд░реВрдкреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рднреАред рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ, рд╣рдо рдЙрд╕ рдЕрдЬреАрдм рдХрдореЗрдВрдЯ рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ JSX рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рдВрд╕ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддреА рд╣реИред рддреЛ, рдлрд┐рдХреНрд╕ рдпрд╛ рддреЛ (1) рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ (2) рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдпрд╣ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ (1) рднрд▓реЗ рд╣реА рдпрд╣ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдирд┐рдпрдо JSX рдШрдЯрдХ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдЕрдЬреАрдм-рд╕реА рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА рдЕрдирджреЗрдЦреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд┐рд╕рд╛рд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

const s = `
Hello ${doesnotexist}`;

рдХреЗ рд░реВрдк рдореЗрдВ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛

const s = `
Hello ${
// @ts-ignore
doesnotexist}`;
{/* 
  // @ts-ignore */}

рдХрдорд╛рд▓ ЁЯМ╣

рдХреНрдпрд╛ рдХреЛрдИ рдФрд░ рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЬреАрдм рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ

{/* 
  // @ts-ignore */}

рдКрдкрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЖрдЬ рд▓реЛрдЧ TSX рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдПрдХ рдЯрди рдХрд╛ рд╢реЛрдз рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рднреА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдЦреЛрдЬ рдкрд╛рдпрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛред рдХреБрдЫ рдмрдпрд╛рди рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рди рдХрд░ рдкрд╛рдирд╛ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдЪреБрдиреМрддреА рд╣реИред

рдПрдХ рдФрд░ (рд╡рд┐рд╖рдо рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реА) рднрд┐рдиреНрдирддрд╛ рдЬреЛ рдХрд╛рдо рдХрд░рддреА рд╣реИ:

<
// @ts-ignore
SomeComponent />

(рдЬрдм рддрдХ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ

{/* 
  // @ts-ignore */}

рдареАрдХ рд╣реИ?)

рддреБрдо рдХрд┐рддрдиреЗ рд╣реЛрд╢рд┐рдпрд╛рд░ рд╣реЛ !!!

рдКрдкрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд▓реЛрдЧ рдЖрдЬ TSX рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдПрдХ рдЯрди рдХрд╛ рд╢реЛрдз рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рднреА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдЦреЛрдЬ рдкрд╛рдпрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛред рдХреБрдЫ рдмрдпрд╛рди рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рди рдХрд░ рдкрд╛рдирд╛ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдЪреБрдиреМрддреА рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.6.2 рдХреЗ рд╕рд╛рде .tsx рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

(рдЬрдм рддрдХ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ

{/* 
  // @ts-ignore */}

рдареАрдХ рд╣реИ?)

рд╣рд╛рдБ, рдЙрди рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЗ рдирд┐рдпрдо рдЙрд╕ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢ рд╣реЛрдВрдЧреЗ

рдЕрдм рдРрд╕рд╛ рдХрд░рдирд╛: neutral_face:

    <   // eslint-disable-line react/jsx-tag-spacing
        // @ts-ignore
    Component/>

рдореИрдВ рдкреНрд░реАрдЯрд┐рдпрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.7 рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдордЬреЗрджрд╛рд░ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЗрдЯреНрд░рд┐рдпрд░ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЕрдм @ ts-ign рдХреЛ рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдкрд╣рд▓реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЯреИрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдирд╣реАрдВред

рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдХрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:

{/* lol https://github.com/Microsoft/TypeScript/issues/27552#issuecomment-495830020
      // @ts-ignore */ /* prettier-ignore */}
    <MyComponent foo={{
        a: 'prop',
        with: 'lots a',
        big: 'object',
        that: 'forces',
        prettier: 'to wrap',
      }}
    />

рдкрд╣рд▓реЗ рд╕реЗ:

    {/* lol https://github.com/Microsoft/TypeScript/issues/27552#issuecomment-495830020
      // @ts-ignore */}
    <MyComponent
      foo={{
        a: 'prop',
        with: 'lots a',
        big: 'object',
        that: 'forces',
        prettier: 'to wrap',
      }}
    />

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдЕрдЧрд░ рдкреНрд░реЗрдЯрд┐рдпрд░ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╢рд┐рдХрд╛рдпрдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди

    <MyComponent
      {...{}/* lol https://github.com/Microsoft/TypeScript/issues/27552#issuecomment-495830020
      // @ts-ignore */}
      foo={{
        a: 'prop',
        with: 'lots a',
        big: 'object',
        that: 'forces',
        prettier: 'to wrap',
      }}
    />

рдХрд╛рдо рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдкреВрд░реНрд╡-рдЙрдкреЗрдХреНрд╖рд╛ рдХреЗрд╡рд▓ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред Jsx рдХреЗ рдЕрдВрджрд░ рдЯрд┐рдкреНрдкрдгреА рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╕ рдХрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВред

рдпрд╣ рдмрдВрдж рдХреНрдпреЛрдВ рд╣реИ? рдХреНрдпрд╛ рд╣рдо рд╕рд┐рд░реНрдл рдмрджрд╕реВрд░рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдереЗ?

рдХреГрдкрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ ...

рдХреНрдпрд╛ рд╣рдо рд╕рд┐рд░реНрдл рдмрджрд╕реВрд░рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдереЗ?

рд╣рд╛рдВред рдлреБрд░реНрддреАрд▓рд╛ рдЕрдм рдмрджрд╕реВрд░рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред "рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣" рдПрдХ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рдирд╣реАрдВ рд╣реИ, рдЬрдм рдЗрд╕реЗ рджрдмрд╛рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╕рднреА рдЕрдзрд┐рдХрд╛рд░реЛрдВ рд╕реЗ, рдЕрд╕рд╛рдзрд╛рд░рдг рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдмрд╣реБрдд рд╕реЗ рд▓реЙрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ jsx рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣реА рд╣реИред

рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рднрдпрдВрдХрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВ ... рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдирд╣реАрдВред

рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦрдиреЗ рдкрд░ рд╡реЛрдЯ / рд╕рд╣рдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдХреБрдЫ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рддреЛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдорд╛рдирд╛ред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ fugly рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ 3 рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛ рдореИрдВ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХреЗ рдирд╡реАрдирддрдо рдХреЛрдб рдореЗрдВ рдЧрд▓рдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИред рдлреБрдЧрд▓реА рд╕рдорд╛рдзрд╛рди рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╡рди-рд▓рд╛рдЗрдирд░ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ jsx рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдФрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ {} рднреАрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ?

{/* @ts-ignore */}
{whatever}

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдЗрд╕реЗ рдЕрднреА рдЦреЛрд▓ рд░рд╣реЗ рд╣реИрдВ: https://github.com/microsoft/TypeScript/issues/37738
рдпрд╣рд╛рдВ PR: https://github.com/microsoft/TypeScript/pull/38228 ith

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реЛрдЪрддрд╛ рд╣реВрдВ

{/* @ts-ignore */}
{whatever}

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдСрдЯреЛ рд╕реНрд╡рд░реВрдкрдг рдЙрдкрдХрд░рдг (рдкреНрд░реЗрдЯрд┐рдпрд░, рдЖрджрд┐) рд╣реИрдХ рдХреЗ рдиреАрдЪреЗ рдЦрд░рд╛рдм рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ:
рдпрд╣ рд╕рдорд╛рдзрд╛рди рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

{/* 
  // @ts-ignore */}

рдЬрдмрдХрд┐ рдпрд╣

<
// @ts-ignore
SomeComponent />

рд╕реНрд╡рддрдГ-рд╕реНрд╡рд░реВрдкрд┐рдд рд╣реИ рдФрд░ рдЕрдорд╛рдиреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдореЗрд░реА рдкреНрд░реАрдЯрд┐рдпрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░)

# 38228 рдХреА рд╕рдлрд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 3.9 рдореЗрдВ рдЙрддрд░рд╛: рдЯреИрдбрд╛:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ JSX рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рджреЗрдЦреЗрдВ:

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рд╣реИ :

import * as React from 'react';

declare var SomeComponentFromLibrary: React.FC<{
    children?: React.ReactElement
}>;

declare var MyComponent: React.FC<{
    foo: string,
}>;

export default () => (
    <SomeComponentFromLibrary>
        {/* @ts-expect-error */}
        <MyComponent />
    </SomeComponentFromLibrary>
)

SomeComponentFromLibrary рдореИрдВ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛, рдФрд░ рдореИрдВ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рджрдмрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ <MyComponent /> рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, SomeComponentFromLibrary рдХреЗ рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рдПрдХ рдФрд░ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЕрдм children?: React.ReactElement рдкреНрд░рдХрд╛рд░ рдХреА рдмрд╛рдзрд╛ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИ, рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред

рдХреНрдпрд╛ JSX рдореЗрдВ рдРрд╕реА рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдХреЛрдб рдореЗрдВ рддрдмреНрджреАрд▓ рди рд╣реЛ?

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

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

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

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

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

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

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