Rollup-plugin-typescript2: рд╡реИрдХрд▓реНрдкрд┐рдХ рд╢реНрд░реГрдЦрдВрд▓рд╛ "рд▓рдХреНрд╖реНрдп" рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓: tsconfig . рдореЗрдВ "esnext"

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдирд╡ре░ 2019  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ezolenko/rollup-plugin-typescript2

рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рдЧрд▓рдд рд╣реИ

https://github.com/brandon-leapyear/rollup-Optional-chaining-repro

рд░реАрдбрдореА рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛:

yarn rollup -c

рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП "target": "esnext" рд▓рд╛рдЗрди рдХреЛ tsconfig.json рдореЗрдВ рдЕрдирдХрдореНрдореЗрдВрдЯ рдХрд░реЗрдВ:

index.ts: (3:57)
[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
index.ts (3:57)
1: import React from 'react'
2: 
3: const a: { b?: string } = {}
                               ^
4: 
5: export default () => <span>{a?.b}</span>
Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
    at error (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:5351:30)
    at Module.error (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:9643:9)
    at tryParse (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:9552:16)
    at Module.setSource (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:9868:33)
    at /Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:12148:20
    at async Promise.all (index 0)
    at async Promise.all (index 0)
    at async Promise.all (index 0)

рдПрдХ rollup-plugin-typescript2 рдмрдЧ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "target": "esnext"
рдЕрд╕рдореНрдмрджреНрдз, yarn tsc --noEmit рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ)ред

рд╡рд╛рддрд╛рд╡рд░рдг

рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

  • рдЯрд╛рдЗрдкрдкреНрд░рддрд┐: рдирд╡реАрдирддрдо
  • рд░реЛрд▓рдЕрдк: рдирд╡реАрдирддрдо
  • рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ2: рдирд╡реАрдирддрдо

рд░реЛрд▓рдЕрдк.config.js

import typescript from 'rollup-plugin-typescript2'

export default {
  input: 'index.ts',
  output: [
    {
      file: 'dist/index.js',
      format: 'es',
    },
  ],
  plugins: [
    typescript({
      typescript: require('typescript'),
    })
  ],
}

tsconfig.json

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "jsx": "react",

    // Uncomment to break:
    // "target": "esnext",
  }
}

рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди

{
    "name": "rollup-optional-chaining-repro",
    "version": "0.0.1",
    "private": true,
    "devDependencies": {
        "rollup": "^1.27.0",
        "rollup-plugin-typescript2": "^0.25.2"
    },
    "dependencies": {
        "typescript": "^3.7.2"
    }
}

рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧрдЗрди рдЖрдЙрдЯрдкреБрдЯ 3

рдкреНрд▓рдЧрдЗрди-рдбреАрдмрдЧ.txt

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ a?.b рд╕реЗ (_a = a) === null || _a === void 0 ? void 0 : _a.b рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм es2015 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрдм esnext рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ a?.b рд╕реЗ a?.b рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрд╕рдиреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдПрдХ рджреЗрд╢реА рдЬреЗрдПрд╕ рдлреАрдЪрд░ рд╣реИ,

рдЖрдкрдХреЛ рдЬреЛ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд░реЛрд▓рдЕрдк рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИред (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ)ред

рдЖрдк tsc рдЪрд▓рд╛рдХрд░, рдЗрд╕реЗ index.js рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд┐рд░ рд░реЛрд▓рдЕрдк рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ js рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдРрд╕рд╛ рд╣реИред "target": "esnext" рд╣рдЯрд╛рдиреЗ рдФрд░ yarn tsc index.ts рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, index.js рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

var _a;
var a = {};
console.log((_a = a) === null || _a === void 0 ? void 0 : _a.b);

( yarn rollup -c рдЕрднреА рднреА рд╡рд┐рдлрд▓ рд╣реИ)

рд╣рдореНрдо, рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛, рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ

const a = {};
console.log(a?.b);

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ (рд╢рд╛рдпрдж рдпрд╛рд░реНрди рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ?):

.\node_modules\.bin\tsc --version
Version 3.7.2

рдореБрдЭреЗ рд▓рдХреНрд╖реНрдп "рдПрд╕рдиреЗрдХреНрд╕реНрдЯ" рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреЗрдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЕрднреА рддрдХ рдХреЛрдИ рдлрд┐рдХреНрд╕ рд╣реИ? рд╕рдм рдХреБрдЫ tsc рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рд╣реИ

@ dagda1 рдпрд╣ рдПрдХ рдмрдЧ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣реА рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ (рдПрд╕рдиреЗрдХреНрд╕реНрдЯ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП) рдХрд┐ рд░реЛрд▓рдЕрдк рдХрд╛рдлреА рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ esnext рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

@ezolenko рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рд░реЛрд▓рдЕрдк рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рд╣рд╛рдБ, рдЖрдк рдирд╡реАрдирддрдо рд░реЛрд▓рдЕрдк рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдХреБрдЫ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпрд╣ рд░реЛрд▓рдЕрдк рдкрдХреНрд╖ рдкрд░ рдпрд╛ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реЛрдЧрд╛)ред

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

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

stakx picture stakx  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

freeman picture freeman  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yangwao picture yangwao  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alexsasharegan picture alexsasharegan  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amacleay picture amacleay  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ