Skip to content

ชนิดข้อมูลพื้นฐาน

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 0x
const binary: number = 0b1010; // Binary starts with 0b
const octal: number = 0o633; // Octal starts with 0o

bigint

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]); // 123
console.log(obj[b]); // 456

null และ 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]; // Union

TypeScript รองรับอาร์เรย์แบบอ่านอย่างเดียวด้วยไวยากรณ์ต่อไปนี้:

const x: readonly string[] = ['a', 'b']; // Readonly modifier
const y: ReadonlyArray<string> = ['a', 'b'];
const j: ReadonlyArray<string | number> = ['a', 1, 'b', 2];
j.push('x'); // Invalid

TypeScript รองรับทูเพิลและทูเพิลแบบอ่านอย่างเดียว:

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 มักเป็นต้นเหตุของข้อผิดพลาดที่อาจบดบังปัญหาจริงในชนิดข้อมูลของคุณ ควรหลีกเลี่ยงการใช้ให้มากที่สุด