https://github.com/brandon-leapyear/rollup-optional-chaining-repro
Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈΠ· README:
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
ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Typescript ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π΅Ρ Π΅Π³ΠΎ).
ΠΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ
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
(ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
ΠΠ½ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ a?.b
Π² a?.b
ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ esnext
. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ JS Π² esnext,
ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ: Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. (Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ ΠΎΠ½ΠΈ ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ).
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² 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);
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΡΠ°ΠΊΠ°Ρ, ΠΊΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, yarn Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ?):
.\node_modules\.bin\tsc --version
Version 3.7.2
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠ΅Π»ΡΡ "esnext" ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ. ΠΡΡΡ Π»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅? ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Ρ tsc
@ dagda1, ΡΡΠΎ Π½Π΅ ΠΎΡΠΈΠ±ΠΊΠ° - ΡΡΠΎ ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ (Π΄Π»Ρ ΡΠ΅Π»ΠΈ esnext), ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ babel Π² ΡΠ΅ΠΏΠΎΡΠΊΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ esnext.
@ezolenko, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π»ΠΈ ΡΡΠ΅Π±ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ babel Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ?
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π·Π½Π°Ρ, Π΄Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ ΠΎΠ½ (Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ).