TypeScript เป็นหนึ่งในกลุ่มของภาษาที่ใช้ จาวาสคริปต์ รันไทม์เป็นสภาพแวดล้อมการดำเนินการ:. P ที่มีโค้ด TysScript ถูกรวบรวมเป็น JavaScript ปกติซึ่งสามารถเรียกใช้โดยเบราว์เซอร์
Jeremy Ashkenas ทำแนวคิดนี้เป็นที่นิยมด้วยภาษา CoffeeScript ของเขา แต่น่าเศร้าที่ไวยากรณ์ที่ค่อนข้างย้อนกลับเป็นเรื่องยากที่จะเรียนรู้สำหรับนักพัฒนาที่คุ้นเคยกับ C # หรือ Visual Basic
เนื่องจาก Microsoft ขยายเป็นเทคโนโลยี Web 2.0 จึงเลือกที่จะรับแรงบันดาลใจจาก Jeremy Ashkenas เนื่องจากความสามารถของ Visual Studio นักพัฒนาสามารถแฮ็คได้ในขณะที่ทำกำไรจากส่วนขยายภาษาต่างๆ
Typescript ไม่ได้ จำกัด อยู่ที่การพิมพ์แบบคงที่: นอกจากนี้ยังมาพร้อมกับคุณสมบัติขั้นสูงที่หลากหลายที่ให้คุณจำลองกระบวนทัศน์การเขียนโปรแกรมเชิงวัตถุบนเว็บ คู่มือสั้น ๆ นี้จะนำคุณไปสู่คุณสมบัติที่สำคัญบางอย่าง หากภาษาอุทธรณ์ต่อคุณข้อมูลเพิ่มเติมสามารถเรียนรู้ได้ในการบิน
แม้ว่า Typescript ยังสามารถใช้กับ Linux หรือ MacOS ได้หรือไม่เราจะยึดครอง IDE อย่างเป็นทางการของ Microsoft ดาวน์โหลด Visual Studio 2017 Free Edition ของ Visual Studio 2017 จาก Microsoft ที่นี่ และตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายเพย์โหลด ASP.NET ในระหว่างการปรับใช้
เนื่องจากจังหวะการปล่อยที่รวดเร็วของ Typescript, Visual Studio จำเป็นต้องขยายด้วยโมดูล SDK ซึ่งสามารถดาวน์โหลดได้จาก ไซต์ Microsoft ที่นี่ . เพียงเรียกใช้โปรแกรมติดตั้งราวกับว่าเป็นแอปพลิเคชัน Windows มาตรฐาน
มันจะไม่เป็น Microsoft หากไม่มีความยุ่งยากเพิ่มเติมบางอย่างที่เกี่ยวข้อง: ในขณะที่ SDK อัพเกรดการติดตั้ง Visual Studio ของคุณคอมไพเลอร์ TSC จริงจะไม่ถูกเพิ่มเข้าไปในบรรทัดคำสั่งของคุณ ปัญหานี้ได้รับการแก้ไขอย่างดีที่สุดโดยใช้ตัวจัดการแพ็กเกจ NPM ของ node.js บนบรรทัดคำสั่ง
PS C: \ ผู้ใช้ \ Tamha \ Download & GT; การติดตั้ง NPM -G Typescript
C: \ ผู้ใช้ \ tamha \ appdata \ โรมมิ่ง \ npm \ tsc - & gt; C: \ ผู้ใช้ \ tamha \ appdata \ โรมมิ่ง \ npm \ node_modules \ typescript \ bin \ tsc
C: \ ผู้ใช้ \ tamha \ appdata \ โรมมิ่ง \ npm \ tsserver - & gt; C: \ ผู้ใช้ \ tamha \ appdata \ โรมมิ่ง \ npm \ node_modules \ typescript \ bin \ tsserver
C: \ ผู้ใช้ \ tamha \ appdata \ โรมมิ่ง \ npm
Visual Studio คาดว่าจะทำงานในกระบวนการทางออกที่เป็นศูนย์กลาง: ในขณะที่น่าสนใจนี่เป็นสิ่งที่เหมาะสำหรับความต้องการของเรา ให้สร้างไฟล์ที่เรียกว่า worker.ts และวางไว้ในที่ที่สะดวกในระบบไฟล์ของคุณ เปิดด้วยการลากเข้าไปใน Visual Studio และวางไว้ในแถบเครื่องมือที่ด้านบน ถัดไปปรับเปลี่ยนเนื้อหาเพื่อรวมรหัสต่อไปนี้:
ฟังก์ชั่น Sayoi () {
Alert ("Oi!");
}
Sayoi ();
ดังที่ได้กล่าวไว้ในการแนะนำไฟล์. TTS ไม่สามารถทำอะไรได้มาก เนื่องจากให้ดำเนินการสร้างไฟล์ที่เรียกว่า index.html ซึ่งจะต้องอยู่ในโฟลเดอร์เดียวกัน ถัดไปเพิ่มรหัสโครงกระดูกที่แสดงพร้อมกับขั้นตอนนี้ มันโหลดเอาต์พุตของคอมไพเลอร์และรันราวกับว่ามันเป็นจาวาสคริปต์อื่น ๆ
& lt; html & gt;
& lt; หัว & gt;
& lt; สคริปต์ src = "worker.js" & gt; & lt; / script & gt;
& lt; / head & gt;
& lt; ร่างกาย & gt; & lt; / body & gt;
& lt; / html & gt;
ขั้นตอนต่อไปเกี่ยวข้องกับการรวมไฟล์. ths ด้วยตนเอง เปิด PowerShell และป้อนคำสั่ง TSC ตามด้วยชื่อของไฟล์อินพุต โดยค่าเริ่มต้นไฟล์เอาต์พุตจะแชร์ชื่อไฟล์ฐาน แต่จะมีส่วนต่อขยายของ. js แทน. ths ในที่สุดเปิดไฟล์ index.html ในเบราว์เซอร์ที่มีให้เลือกเพื่อพิสูจน์ลักษณะของกล่องข้อความ
PS C: \ ผู้ใช้ \ Tamha \ Downloads & GT; tsc. \ คนงาน
จนถึงตอนนี้ Typescript ได้ทำมากกว่าทำหน้าที่เป็นสภาพแวดล้อมจาวาสคริปต์ที่ซับซ้อนมากขึ้น ขั้นตอนต่อไปนั้นเกี่ยวข้องกับการเปิดใช้งานการรองรับการพิมพ์แบบคงที่: ช่วยให้คอมไพเลอร์ทำการวิเคราะห์แบบสแตติกของพารามิเตอร์เก็บค่าที่ไม่ถูกต้อง สำหรับสิ่งนี้จำเป็นต้องมีชุดประเภท - ประเภทพื้นฐานแสดงอยู่ในตารางด้านบนในขณะที่คลาสจะถูกกล่าวถึงในภายหลัง
การกำหนดประเภทตัวแปร TypeScript เกิดขึ้นผ่าน 'A:' วางไว้หลังจากชื่อตัวแปร ให้เราปรับเปลี่ยนฟังก์ชั่น OI ของเราเพื่อใช้ตัวเลขและให้เราส่งต่อในสตริงแทน ในที่สุดเรียกคอมไพเลอร์ TSC อีกครั้งเพื่อฉลองสายตาของคุณในข้อความแสดงข้อผิดพลาดที่แสดงในภาพหน้าจอด้านบน - Visual Studio โดยบังเอิญจะเน้นบรรทัดที่เป็นปัญหา
ฟังก์ชั่น Sayoi (Whattosay: หมายเลข) {
แจ้งเตือน (whattosay);
}
Sayoi ("สวัสดี");
Javascript ใช้การวางแนววัตถุผ่านการสร้างต้นแบบ: รูปแบบของรหัสที่ผิดปกติใน. NET และ C / C ++ โลก Typescript แก้ปัญหานี้ได้ด้วยการอนุญาตให้มีการสร้างชั้นเรียน - กระบวนการที่แสดงในตัวอย่างที่มาพร้อมกับขั้นตอนนี้
Class Imagine {
Myresult สาธารณะ: จำนวน;
MYA สาธารณะ: จำนวน;
MYB สาธารณะ: จำนวน;
Constructor (_A: หมายเลข, _b: หมายเลข)
{
นี่.myresult = _a + _b;
นี่คือ. mya = _a;
}
}
โดยปกติคุณลักษณะสาธารณะจะถูกนำมาใช้เพื่อประกาศว่าองค์ประกอบของโปรแกรมจะสามารถเข้าถึงได้จากภายนอก เมื่อใช้เป็นพารามิเตอร์ Constructor จะแนะนำ Compiler TypeScript เพื่อสร้างฟิลด์ท้องถิ่นด้วยชื่อเดียวกัน
Class Imagine {
Myresult สาธารณะ: จำนวน;
// MYA สาธารณะ: จำนวน;
Constructor (Public MYA: จำนวนสาธารณะ _b: หมายเลข)
{
นี่.myresul = mya + _b;
นี่.mya = mya;
}
}
ให้เราขยายคลาสตัวอย่างของเราโดยให้วิธีการที่เข้าถึงค่าที่เก็บไว้ใน myresult และ mya และเอาต์พุตบนหน้าจอ ในที่สุดพารามิเตอร์ใหม่จะใช้ในการสร้างอินสแตนซ์ของคลาส - ใช้สำหรับการเรียกใช้วิธีการ
Class Imagine {
Myresult สาธารณะ: จำนวน;
. . .
สาธารณะกล่าวว่า (): เป็นโมฆะ {
แจ้งเตือน (..myresult);
}
}
ให้ myimagine: ลองนึกภาพ = นิวจินตนาการ (2, 2);
myimagine.saysomething ();
การออกแบบภาษาของ Typescript มีวัตถุประสงค์เพื่อช่วยให้นักพัฒนาพยายามมากที่สุดเท่าที่จะทำได้ คุณสมบัติที่ดีหนึ่งเป็นประชากรอัตโนมัติของพารามิเตอร์ที่สร้างขึ้นโดยใช้ทางลัดที่แสดง
Class Imagine {
Myresult สาธารณะ: จำนวน;
Constructor (Public Mya: จำนวน MYB สาธารณะ: หมายเลข)
{
นี่.myresult = mya + myb;
}
สาธารณะกล่าวว่า (): เป็นโมฆะ {
การแจ้งเตือน (นี่.mya + "" + นี้ ..myb);
}
}
หนึ่งในหลักหลักของการเขียนโปรแกรมเชิงวัตถุที่เกี่ยวข้องกับการใช้คลาสที่อยู่ด้านบนของกันและกัน ชั้นเรียนที่ได้รับจากนั้นสามารถแทนที่เนื้อหาของชั้นฐานของพวกเขานำไปสู่ลำดับชั้นของคลาสที่ปรับได้อย่างยืดหยุ่น
ชั้นเรียนในอนาคตขยายจินตนาการ
{
สาธารณะกล่าวว่า (): เป็นโมฆะ {
console.log (..mya);
}
}
ตัวอย่างโค้ดจากด้านบนขยายชั้นเรียนจินตนาการด้วยองค์ประกอบย่อยที่เรียกว่าอนาคต ในอนาคตแตกต่างจากจินตนาการว่าวิธีการของมันคือการวิวัฒนาการมากขึ้นทำให้ข้อความเข้าสู่บรรทัดคำสั่งของเบราว์เซอร์
ให้ myimagine: ลองนึกภาพ = อนาคตใหม่ (2, 2);
myimagine.saysomething ();
ให้ myfuture: อนาคต = อนาคตใหม่ (9, 9);
myfuture.saysomething ();
ด้วยรหัสจริงสามารถทดสอบได้ เมื่อเรียกใช้คอนโซลเบราว์เซอร์จะมีสองการเรียกคืนของอนาคต - คลาสขั้นสูงช่วยให้คุณสมบัติของมันแม้ในขณะที่เรียกใช้เป็นวัตถุจินตนาการ
การเปิดเผยตัวแปรสมาชิกที่มีตัวดัดแปลงสาธารณะไม่เป็นที่นิยม: หลังจากทั้งหมดจะควบคุมสิ่งที่ผู้ใช้ทำอะไรกับเนื้อหาของตัวแปร Accessors Typescript ช่วยให้คุณสามารถแก้ไขปัญหานี้ในแฟชั่นที่คล้ายกับ OOP แบบดั้งเดิม โปรดทราบว่าสมาชิกแบบอ่านอย่างเดียวได้รับการสนับสนุน แต่การใช้คุณสมบัตินี้ต้องใช้การเปิดใช้งานการสนับสนุน ECMASCript5
สาธารณะ _mycache: สตริง;
รับ FullCache (): string {
ส่งคืนนี้ ._mycache;
}
ตั้งค่า FullCache (Newx: String) {
ถ้า (newx == "สวัสดี") {
this._mycache = newx;
}
อื่น {
console.log ("ข้อมูลผิด!");
}
}
ความสามารถในการสร้างลำดับชั้นการสืบทอดที่ซับซ้อนจะกระตุ้นให้นักพัฒนาพยายามเสี่ยงโชคในชั้นเรียนที่เป็นนามธรรม TypeScript คุณยังได้รับความคุ้มครองในเรื่องนั้น - ตัวอย่างที่มาพร้อมกับขั้นตอนนี้สร้างคลาสที่มีนามธรรมและเป็นสมาชิกจริง พยายามที่จะยกตัวอย่างคลาสนามธรรมนำไปสู่ข้อผิดพลาดของคอมไพเลอร์โดยตรง
คลาสนามธรรมลองนึกภาพ {
Myresult สาธารณะ: จำนวน;
นามธรรม Sayname (): เป็นโมฆะ;
Constructor (Public MYA: หมายเลข MYB สาธารณะ: หมายเลข) {
นี่.myresult = mya + myb;
}
สาธารณะกล่าวว่า (): เป็นโมฆะ {
การแจ้งเตือน (นี่.mya + "" + นี้ ..myb);
}
}
ชั้นเรียนในชั้นเรียนขยายจินตนาการ {
. . .
Public Sayname () {
console.log ("สวัสดี");
}
}
เนื่องจากโครงสร้างวัตถุมีความซับซ้อนมากขึ้นนักพัฒนามักพบว่าตัวเองเผชิญกับสถานการณ์ที่ชั้นหนึ่งใช้ตรรกะหลายบิตหลายชั้น ในกรณีนี้อินเทอร์เฟซทำให้วิธีการแก้ปัญหาที่ดี - ตัวอย่างแสดงสิ่งที่คาดหวัง
อินเทอร์เฟซ datainterface {
ฟิลด์: หมายเลข;
WorkerMethod (): เป็นโมฆะ;
}
ในกรณีของชั้นเรียนข้างต้นอินเทอร์เฟซเราไม่ดีถ้าเราไม่สามารถใช้งานได้ โชคดีที่การใช้งานนั้นไม่ยากโดยเฉพาะอย่างยิ่ง: โปรดทราบว่าผู้เขียนอินเตอร์เฟสสามารถนอกจากนี้ประกาศส่วนต่าง ๆ ของการสร้างของพวกเขาที่จะเป็นตัวเลือก
ผู้ปฏิบัติงานชั้นเรียนดำเนินการ datainterface {
ฟิลด์: หมายเลข;
WorkerMethod (): เป็นโมฆะ {
โยนข้อผิดพลาดใหม่ ("วิธีการไม่ได้ดำเนินการ");
}
}
คอมไพเลอร์แบบ Typescript บังคับใช้การตรวจสอบความถูกต้องของตัวแปรที่เข้มงวด เมื่อทำงานกับคลาสเก็บข้อมูลทั่วไปให้คุณปล่อยให้ผู้ใช้ปลายทางกำหนดประเภทที่จะจัดการ นอกจากนี้ TypeScript ยังช่วยให้องค์ประกอบทั่วไปอื่น ๆ เช่นฟังก์ชั่นดังที่แสดงในข้อมูล (Tautological) ที่นำมาจากเอกสาร
// ฟังก์ชั่นทั่วไป
ฟังก์ชั่นข้อมูลประจำตัว (arg: number): หมายเลข {
ส่งคืน arg;
}
// คลาสทั่วไป
Class GenericNumber & LT; T & GT; {
ศูนย์: t;
เพิ่ม: (x: t, y: t) = & gt; t; }
เครื่องของรัฐและองค์ประกอบที่คล้ายกันได้รับประโยชน์อย่างมากจากการมีวิธี จำกัด ตัวแปรเพื่อเก็บสถานะที่กำหนดไว้สองสามสถานะ สิ่งนี้สามารถทำได้โดยใช้ชนิดข้อมูล enum:
enum parserstate {
idle = 1,
อ่าน 0
อ่าน 1
}
Class Imagine {
Mystate สาธารณะ: ParSerstate;
Constructor (Public Mya: จำนวน MYB สาธารณะ: หมายเลข)
{
นี่.mystate = parserstate.idle;
ครอบคลุมภาษาที่ซับซ้อนเนื่องจาก typescript ในบทความเดียวเป็นไปไม่ได้เกือบ มองไปที่ ตัวอย่างของไซต์ TypeScript เพื่อหาข้อมูลเพิ่มเติมเกี่ยวกับการผูกภาษา
บทความนี้ได้รับการตีพิมพ์ครั้งแรกในฉบับที่ 266 นักออกแบบเว็บไซต์ นิตยสารออกแบบเว็บสร้างสรรค์ - เสนอแบบฝึกหัดผู้เชี่ยวชาญแนวโน้มที่ทันสมัยและทรัพยากรฟรี ซื้อปัญหา 266 ที่นี่ หรือ สมัครสมาชิกกับนักออกแบบเว็บไซต์ที่นี่ .
ข้อเสนอคริสต์มาสพิเศษ: ประหยัดสูงสุดถึง 49% สำหรับการสมัครสมาชิกกับนักออกแบบเว็บไซต์ สำหรับคุณหรือเพื่อนสำหรับคริสต์มาส มันเป็นข้อเสนอที่ จำกัด ดังนั้นย้ายอย่างรวดเร็ว ...
บทความที่เกี่ยวข้อง:
ใน MasterClass นี้ฉันจะเปิดเผยขั้นตอนพื้นฐานที่คุณต�..
Procreate ได้กลายเป็นแอพพลิเคชั่นการวาดภาพดิจิทัล�..
ใช้งานง่ายและมีเครื่องมือสร้างสรรค์จำนวนหนึ..
ต้นกำเนิดของการวาดภาพขนาดเล็กทอดยาวไปถึงยุค..
FlexBox เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการลด CSS BLOAT..