Babel 7 มีอะไรใหม่บ้าง

Banyawat
THiNKNET Engineering
1 min readAug 2, 2018

--

Original image: www.pexels.com

ทุกวันนี้ถ้าเราจะเขียนเว็บด้วย Javascript ก็คงไม่มีใครปฏิเสธตัวช่วยอย่าง Babel กันแล้วล่ะครับ มันคือวุ้นแปลภาษาที่อัพเกรดให้เราสามารถเขียน Syntax ให้สวยงามได้ ลองมาดูกันว่ามีอะไรบ้าง

Class Property

ใน Class เราสามารถประกาศ property หรือ attribute ใน scope ของ class ได้เลย เหมือนกับหลักการใน OOP ของหลายๆภาษา

Class Property

ตัวนี้จะมากับ @babel/preset-stage-3 ซึ่งเราต้องติดตั้งและเรียกใช้ presets ใน babel config file (มีตัวอย่างตอนท้าย)

Object Rest/Spread

สำหรับการ assign ค่า Object ในรูปแบบ destructuring ก็สามารถเอาค่าที่เหลือไปเก็บในอีกตัวแปรได้แบบนี้

Object Rest

ส่วน spread ก็สามารถทำแบบนี้ได้เลย

Object Spread

Optional Try/Catch

อันนี้ไม่มีอะไรมากมาย แค่ทำให้โค้ดสั้นลงมา 3–4 ตัวแค่นั้นครับ 555 อาจจะทำให้เขียนเร็วขึ้นอีกหน่อยด้วยความสามารถที่ไม่ต้องรับตัวแปรในกรณี catch แล้วเขียนได้เลยแบบนี้ครับ

Optional Try/Catch

Unicode Property Regular Expression

ของเวอร์ชันนี้ เราสามารถใช้ tag พิเศษอย่าง \p ได้แล้วซึ่งเราสามารถเลือก set ของ unicode character แบบต่างๆได้ เช่นตัวอย่างนี้ก็คือเช็คในเคสที่เป็นภาษาไทยทั้งหมด

Unicode Property

สำหรับรายละเอียดเรื่อง Unicode property สามารถดูเพิ่มเติมได้ที่ ECMAScript Unicode Property escapes

Dynamic Import

เพื่อ code ที่ optimize ดีขึ้น เราสามารถ import module ณ ที่ใดก็ได้ของโค้ด ทำให้เราสามารถกำจัดโค้ดที่ยังไม่จำเป็นต้องใช้เมื่อตอนเริ่มโปรแกรมได้

Dynamic import

จะต้องใช้ plugins babel-plugin-dynamic-import-node เข้ามาเพิ่มใน babel config

Numeric Separator

ทำให้อ่านตัวเลขที่มีหลักเยอะๆ ง่ายขึ้น ด้วยการแบ่งด้วยเครื่องหมาย _

Numeric Separator

เจ้าตัวนี้จะติดมากับ presets “@babel/preset-stage-2”

Optional Chaining

เป็นการเช็คค่าใน object ที่ทำให้ชีวิตง่ายขึ้นมาอีกนิดนึง ก่อนหน้านี้เราจะต้องเช็คก่อนว่า object นั้นๆ undefined หรือไม่ แล้วค่อยเช็ค key ที่อยู่ข้างในอีกที

Origin of Optional Chaining

ตอนนี้เราจะใช้ syntax ใหม่กันครับ ซึ่งจะช่วยได้มากในเคสที่ object ซ้อนกันอยู่หลายๆชั้น

Optional Chaining

จะต้องใช้ plugins “ @babel/plugin-proposal-optional-chaining” ร่วมด้วย

babel เวอร์ชันล่าสุดเค้าก็จะมี signature ตรงชื่อ package จะนำด้วย @babel/… แต่ทว่าตอนนี้ยังเป็นเพียงแค่ beta อยู่ ในเร็วๆนี้น่าจะมีการปรับเปลี่ยนให้ทุกอย่างง่ายขึ้นกว่านี้ ก็ต้องรอติดตามชมกันต่อไป

สุดท้ายนี้ก็ขอฝากไว้ในอ้อมอกอ้อมใจ กับตัวอย่างการ setup babel กับการใช้งานแต่ละ feature ที่เพิ่งกล่าวไปเพื่อความกระจ่างชัดเจนยิ่งขึ้นนะครับ

--

--