ค้นหาเว็บไซต์

javascript - TypeScript: SyntaxError: ข้อความ "โทเค็นที่ไม่คาดคิด" ในคอนโซล


ทำไมโค้ดนี้ถึงใช้ไม่ได้?

ฉันมีไฟล์ app.ts ดังต่อไปนี้

var a = 1;
var b = 3;
console.log(`Before a = ${a}, b = ${b}`);

[a, b] = [b, a];
console.log(`After a = ${a}, b = ${b}`);

เมื่อฉันพยายามเรียกใช้มันด้วย

node app.ts

ฉันมีต่อไปนี้:

[a, b] = [b, a];
^

ReferenceError: Invalid left-hand side in assignment
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:974:3

แต่ฉันคาดว่า:

Before a = 1, b = 2
After a = 2, b = 1

TypeScript เวอร์ชัน 1.8.10

คำตอบ #1

คุณต้องคอมไพล์โค้ดของคุณก่อน

tsc app.ts

จากนั้นรันมันด้วย

node app.js

TypeScript เป็นภาษาที่ถูกแปลงโค้ด tsc ตัวคอมไพเลอร์ของ TypeScript จะแปลงซอร์สโค้ด TypeScript เป็น JavaScript Nodejs เป็นสภาพแวดล้อมของ JavaScript ที่ห่อหุ้มเครื่องเสมือน V8

คำตอบ #2

คุณกำลังรันโค้ดด้วย NodeJS คุณไม่ได้แปลงจาก TypeScript ไปเป็น JavaScript ดังนั้นคุณกำลังพยายามปฏิบัติต่อ TypeScript ของคุณราวกับว่ามันเป็น JavaScript

นั่นอาจจะโอเค เพราะ TypeScript เป็นซูเปอร์เซ็ตของ JavaScript ในกรณีนี้ โค้ดของคุณก็เป็น JavaScript ที่ถูกต้องเช่นกัน

การกำหนดค่าแบบทำลายที่คุณพยายามใช้นั้นเป็นฟีเจอร์ของ ES6 ซึ่งรองรับเฉพาะใน NodeJS ตั้งแต่เวอร์ชัน 6.5 เป็นต้นไป

คุณจำเป็นต้องอัปเกรด NodeJS เป็นเวอร์ชันที่ใหม่กว่า

อีกทางหนึ่ง ให้แปลง TypeScript เป็น ES5 ด้วย tsc app.ts

บทความที่เกี่ยวข้อง