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
рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ)ред
рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
import typescript from 'rollup-plugin-typescript2'
export default {
input: 'index.ts',
output: [
{
file: 'dist/index.js',
format: 'es',
},
],
plugins: [
typescript({
typescript: require('typescript'),
})
],
}
{
"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"
}
}
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 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 рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рд░реЛрд▓рдЕрдк рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЗрдмреЗрд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рд╣рд╛рдБ, рдЖрдк рдирд╡реАрдирддрдо рд░реЛрд▓рдЕрдк рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдХреБрдЫ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпрд╣ рд░реЛрд▓рдЕрдк рдкрдХреНрд╖ рдкрд░ рдпрд╛ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реЛрдЧрд╛)ред