TypeScript là một ngôn ngữ lập trình được phát triển dựa trên JavaScript, hỗ trợ hệ thống kiểu tĩnh. Việc kiểm tra kiểu của một biến là một phần quan trọng trong lập trình với TypeScript, giúp phát hiện lỗi trong quá trình biên dịch và làm cho mã dễ đọc hơn. Dưới đây là một số phương pháp phổ biến để kiểm tra kiểu của biến trong TypeScript.

Sử dụng từ khóa typeof

Một trong những cách đơn giản nhất để kiểm tra kiểu của một biến là sử dụng từ khóa typeof. Từ khóa này trả về một chuỗi mô tả kiểu của biến đó. Dưới đây là ví dụ:

let name: string = "John Doe";
let age: number = 30;
let isActive: boolean = true;

console.log(typeof name); // "string"
console.log(typeof age); // "number"
console.log(typeof isActive); // "boolean"

Trong ví dụ trên, typeof trả về kiểu của các biến là string, numberboolean.

Sử dụng toán tử instanceof

Đối với các kiểu đối tượng phức tạp như class hoặc interface, bạn có thể sử dụng toán tử instanceof để kiểm tra kiểu. Toán tử này kiểm tra xem một đối tượng có phải là thể hiện của một class cụ thể hay không.

class Person {
    constructor(public name: string) {}
}

let person = new Person("John Doe");

console.log(person instanceof Person); // true

Trong ví dụ này, toán tử instanceof trả về trueperson là một thể hiện của lớp Person.

Sử dụng type guards

TypeScript cũng hỗ trợ việc kiểm tra kiểu thông qua type guards, cho phép bạn xác định kiểu của một biến trong một khối mã. Điều này có thể được thực hiện thông qua các hàm hoặc biểu thức.

Kiểm tra kiểu bằng cách sử dụng hàm

Bạn có thể định nghĩa các hàm để kiểm tra kiểu cụ thể. Ví dụ:

function isString(variable: any): variable is string {
    return typeof variable === 'string';
}

let input: any = "Hello, TypeScript!";

if (isString(input)) {
    console.log(input.toUpperCase()); // "HELLO, TYPESCRIPT!"
}

Kiểm tra kiểu bằng cách sử dụng in operator

Bạn cũng có thể sử dụng toán tử in để kiểm tra xem một thuộc tính có tồn tại trong một đối tượng hay không.

interface User {
    name: string;
    age: number;
}

function greet(user: User | string) {
    if (typeof user === 'string') {
        console.log(`Hello, ${user}!`);
    } else {
        console.log(`Hello, ${user.name}!`);
    }
}

greet("John");
greet({ name: "Jane", age: 25 });

Kiểm tra kiểu với typeof trong union types

Khi bạn có các kiểu kết hợp (union types), bạn có thể sử dụng typeof để kiểm tra từng kiểu.

type Input = string | number;

function processInput(input: Input) {
    if (typeof input === 'string') {
        console.log(`String input: ${input}`);
    } else {
        console.log(`Number input: ${input}`);
    }
}

processInput("TypeScript");
processInput(42);

Kết luận

Việc kiểm tra kiểu của một biến trong TypeScript là rất quan trọng để đảm bảo tính chính xác và an toàn của mã nguồn. Bạn có thể sử dụng các phương pháp như typeof, instanceof, type guards và toán tử in để thực hiện kiểm tra kiểu. Hiểu rõ cách kiểm tra kiểu giúp bạn tận dụng tối đa các tính năng của TypeScript và viết mã chất lượng hơn.