ชนิดข้อมูลพื้นฐาน
TypeScript รองรับชนิดข้อมูลพื้นฐาน 7 ชนิด ชนิดข้อมูลพื้นฐานหมายถึงชนิดที่ไม่ใช่ออบเจ็กต์และไม่มีเมธอดใด ๆ เชื่อมโยงอยู่ ใน TypeScript ชนิดข้อมูลพื้นฐานทั้งหมดเปลี่ยนแปลงไม่ได้ ซึ่งหมายความว่าเมื่อกำหนดค่าแล้วจะไม่สามารถเปลี่ยนค่าได้
string
ชนิดข้อมูลพื้นฐาน string ใช้เก็บข้อมูลข้อความ และค่าจะอยู่ภายในเครื่องหมายอัญประกาศคู่หรืออัญประกาศเดี่ยวเสมอ
const x: string = 'x';const y: string = 'y';สตริงสามารถครอบคลุมหลายบรรทัดได้หากล้อมรอบด้วยอักขระแบ็กทิก (`):
let sentence: string = `xxx, yyy`;boolean
ชนิดข้อมูล boolean ใน TypeScript เก็บค่าแบบไบนารี ซึ่งเป็น true หรือ false
const isReady: boolean = true;number
ชนิดข้อมูล number ใน TypeScript แสดงด้วยค่าจุดลอยตัวแบบ 64 บิต ชนิด number สามารถแสดงจำนวนเต็มและเศษส่วนได้
TypeScript ยังรองรับเลขฐานสิบหก เลขฐานสอง และเลขฐานแปด ตัวอย่างเช่น:
const decimal: number = 10;const hexadecimal: number = 0xa00d; // Hexadecimal starts with 0xconst binary: number = 0b1010; // Binary starts with 0bconst octal: number = 0o633; // Octal starts with 0obigint
bigint ใช้แทนค่าจำนวนเต็มที่อาจมากกว่าจำนวนเต็มที่ปลอดภัยสูงสุดซึ่ง number รองรับ โดยมีค่าเท่ากับ 2^53 - 1
สามารถสร้าง bigint ได้โดยเรียกฟังก์ชันในตัว BigInt() หรือเติม n ต่อท้ายลิเทอรัลตัวเลขจำนวนเต็มใด ๆ:
const x: bigint = BigInt(9007199254740991);const y: bigint = 9007199254740991n;หมายเหตุ:
- ค่า
bigintไม่สามารถใช้ร่วมกับnumberและไม่สามารถใช้กับMathที่มีมาให้ในตัวได้ โดยต้องแปลงให้เป็นชนิดเดียวกันก่อน - ค่า
bigintใช้งานได้เฉพาะเมื่อการกำหนดค่า target เป็น ES2020 หรือสูงกว่า
Symbol
Symbol เป็นตัวระบุที่ไม่ซ้ำกัน ซึ่งสามารถใช้เป็นคีย์ของพร็อพเพอร์ตีในออบเจ็กต์เพื่อป้องกันความขัดแย้งของชื่อ
type Obj = { [sym: symbol]: number;};
const a = Symbol('a');const b = Symbol('b');let obj: Obj = {};obj[a] = 123;obj[b] = 456;
console.log(obj[a]); // 123console.log(obj[b]); // 456null และ undefined
ชนิด null และ undefined ต่างก็ใช้แทนการไม่มีค่าหรือการขาดหายไปของค่า
ชนิด undefined หมายถึงค่ายังไม่ได้ถูกกำหนดหรือเริ่มต้น หรือบ่งชี้ถึงการไม่มีค่าโดยไม่ได้ตั้งใจ
ชนิด null หมายถึงเราทราบว่าฟิลด์นั้นไม่มีค่า ดังนั้นค่าจึงไม่พร้อมใช้งาน และบ่งชี้ถึงการไม่มีค่าโดยตั้งใจ
Array
array คือชนิดข้อมูลที่สามารถเก็บหลายค่าซึ่งอาจเป็นชนิดเดียวกันหรือไม่ก็ได้ โดยสามารถกำหนดได้ด้วยไวยากรณ์ต่อไปนี้:
const x: string[] = ['a', 'b'];const y: Array<string> = ['a', 'b'];const j: Array<string | number> = ['a', 1, 'b', 2]; // UnionTypeScript รองรับอาร์เรย์แบบอ่านอย่างเดียวด้วยไวยากรณ์ต่อไปนี้:
const x: readonly string[] = ['a', 'b']; // Readonly modifierconst y: ReadonlyArray<string> = ['a', 'b'];const j: ReadonlyArray<string | number> = ['a', 1, 'b', 2];j.push('x'); // InvalidTypeScript รองรับทูเพิลและทูเพิลแบบอ่านอย่างเดียว:
const x: [string, number] = ['a', 1];const y: readonly [string, number] = ['a', 1];any
ชนิดข้อมูล any ใช้แทนค่า “ใด ๆ” ตามความหมายตรงตัว และเป็นค่าเริ่มต้นเมื่อ TypeScript ไม่สามารถอนุมานชนิดได้หรือไม่มีการระบุชนิด
เมื่อใช้ any คอมไพเลอร์ TypeScript จะข้ามการตรวจสอบชนิด ดังนั้นจึงไม่มีความปลอดภัยด้านชนิดขณะใช้ any โดยทั่วไปอย่าใช้ any เพื่อปิดข้อผิดพลาดของคอมไพเลอร์ แต่ควรมุ่งแก้ไขข้อผิดพลาดนั้น เพราะการใช้ any อาจทำให้สัญญาของชนิดถูกละเมิดและสูญเสียประโยชน์จากการเติมโค้ดอัตโนมัติของ TypeScript
ชนิด any อาจมีประโยชน์ระหว่างการย้ายจาก JavaScript ไปยัง TypeScript แบบค่อยเป็นค่อยไป เนื่องจากสามารถปิดข้อผิดพลาดของคอมไพเลอร์ได้
สำหรับโปรเจกต์ใหม่ ให้ใช้การกำหนดค่า TypeScript noImplicitAny ซึ่งทำให้ TypeScript รายงานข้อผิดพลาดเมื่อมีการใช้หรืออนุมานเป็น any
ชนิด any มักเป็นต้นเหตุของข้อผิดพลาดที่อาจบดบังปัญหาจริงในชนิดข้อมูลของคุณ ควรหลีกเลี่ยงการใช้ให้มากที่สุด