Bài 03: TypeScript Basic Types

Trong bài này chúng ta sẽ tìm hiểu về các kiểu dữ liệu và cách khai báo trong TypeScript.

Khi học bất kì một ngôn ngữ nào chúng ta cũng thao tác với các kiểu dữ liệu căn bản như: float, int, boolean, string, array, ... Trong TypeScript cũng cung cấp các kiểu dữ liệu căn bản như vậy, ngoài ra nó còn cung cấp nhiều kiểu dữ liệu rất hay khác như: any, never, void, ... và trong bài này chúng ta sẽ cùng học các kiểu dữ liệu này nhé.

1. Khai báo biến trong TypeScript

Cũng như Javascript chúng ta có thể sử dụng từ khóa var hoặc let để khai báo biến, riêng từ khóa let thường được sư dụng trong ES6 nên nó chỉ chạy ở các trình duyệt phiên bản mới thôi nhé các bạn. Tuy nhiên các bạn đừng lo bởi vì bây giờ hầu hết trình duyệt đã hỗ trợ ES6.

Ví dụ: Khai báo biên trong TypeScript

var domain = 'freetuts.net';
let email = 'thehalfheart@gmail.com';

Nếu ta muốn xác định kiểu dữ liệu cho biến thì sử dụng cú pháp sau:

TypeScript:

var domain : string = 'freetuts.net';

Kết quả Javascript :

var domain = 'freetuts.net';

2. Các kiểu dữ liệu trong TypeScript

Sau đây là danh sách các kiểu dữ liệu trong TypeScript.

Kiểu Boolean

Kiểu boolean có hai giá trị là true hoặc false và cả Javascript lẫn TypeScript đều gọi là boolean.

TypeScript:

let isDone: boolean = false;

Kết quả Javascript:

var isDone = false;

Kiểu Number

Cũng tương tự như trong Javascript thì trong TypeScript chỉ tồn tại một kiểu Number, còn việc phân chia các kiểu nhỏ hơn như số nguyên, só thực sẽ phụ thuộc vào giá trị mà bạn gán cho nó. TypeScript cũng hỗ trợ kiểu nhị phân và bát phân được giới thiệu trong ECMAScript 2015.

TypeScript:

var decimal: number = 12;
var hex: number = 0xf00d;
var binary: number = 0b1010;
var octal: number = 0o744;

Kết quả Javascript:

var decimal = 12;
var hex = 0xf00d;
var binary = 10;
var octal = 484;

Kiểu String

Kiểu string đơn giản là một chuỗi (một đoạn text) được bao bọc bởi cặp ký tự ' hoặc ".

TypeScript:

let username: string = 'thehalfheart';

Kết quả Javascript:

var username = 'thehalfheart';

Kiểu Array

Để khai báo kiểu Array trong TypeScript thì chúng ta có hai cách, cách thứ nhất chúng ta sử dụng cặp dấu [] đặt ở đằng sau kiểu dữ liệu.

let students: string[] = ['Cuong', 'Kinh', 'Chinh'];

Cách thứ hai chúng ta sử dụng từ khóa Array<type> để khai báo.

let students: Array<string> = ['Cuong', 'Kinh', 'Chinh'];

Kiểu Tuple

Tuple là kiểu dữ liệu đặc biệt có thể chứa nhiều giá trị với nhiều kiểu dữ liệu con khác nhau. Thực ra Tuple là một mảng nhưng đã xác định được số phần tử và kiểu dữ liệu cho mỗi phần tử đó. Ví dụ mình khai báo biên student gồm hai thông tin đó là tên và tuổi thì lúc này tên sẽ là kiểu string còn tuổi sẽ là kiểu number.

TypeScript

let student: [string, number] = ['Cuong', 27];

Kết quả Javascript

var student = ['Cuong', 27];

Như vậy thực ra nó là một mảng gồm hai phần tử.

Kiểu Enum

Tương tự như trong C#, Enum là kiểu dữ liệu đặc biệt dùng để tạo một nhóm tên tương ứng với các giá trị là những con số mà ta thiết lập cho nó, cách này sẽ giúp ta dễ dàng nhớ tên hơn.

TypeScript

enum Fruits {Orange, Banana, Mango, Apple};  
let a: Fruits = Fruits.Orange; 
alert(a);

Kết quả Javascript

var Fruits;
(function (Fruits) {
    Fruits[Fruits["Orange"] = 0] = "Orange";
    Fruits[Fruits["Banana"] = 1] = "Banana";
    Fruits[Fruits["Mango"] = 2] = "Mango";
    Fruits[Fruits["Apple"] = 3] = "Apple";
})(Fruits || (Fruits = {}));
;
var a = Fruits.Orange;
alert(a);

Khi chạy chương trình này kết quả sẽ thông báo lên trình duyệt số 0 => như vậy nếu ta không thiết lập giá trị cho chúng thì nó sẽ tính theo thứ tự và bắt đầu bằng 0.

Bây giờ bạn đổi lại đoạn code TypeScript như sau:

TypeScript

enum Fruits {Orange = 12, Banana, Mango, Apple};
let a: Fruits = Fruits.Orange;
alert(a);

Kết quả Javascript

var Fruits;
(function (Fruits) {
    Fruits[Fruits["Orange"] = 12] = "Orange";
    Fruits[Fruits["Banana"] = 13] = "Banana";
    Fruits[Fruits["Mango"] = 14] = "Mango";
    Fruits[Fruits["Apple"] = 15] = "Apple";
})(Fruits || (Fruits = {}));
;
var a = Fruits.Orange;
alert(a);

Nhìn vào đoạn code biên dịch bạn dễ dàng đoán được số thứ tự sẽ bắt đầu từ 12.

=> Vậy để thiết lập giá trị cho từng phần tử thì ta gán trực tiếp cho chúng bằng dấu =.

Kiểu Any

Đây là kiểu dữ liệu thoải mái nhất bởi nó cho phép bạn gán giá trị với kiểu dữ liệu bất kì, điều này giúp giải quyết rắc rối ở một số trường hợp, ví dụ ta cần lấy dữ liệu từ người dùng hoặc một thư viện khác thì ta không biết giá trị trả về sẽ ở kiểu dữ liệu nào nên ta sẽ sử dụng kiểu Any để tránh lỗi. Sau đây là một ví dụ từ trang chủ của nó.

TypeScript

let notSure: any = 4; // kiểu number
notSure = "Thay thế bằng kiểu string";
notSure = false; // bây giờ lại là kiểu boolean

Kết quả Javascript

var notSure = 4; // kiểu number
notSure = "Thay thế bằng kiểu string";
notSure = false; // bây giờ là kiểu boolean

Ngoài các dữ liệu đơn giản thì Any còn kết hợp được với cả các kiểu phức tạp, ví dụ:

let list: any[] = [1, true, "free"];

Kiểu Void

Trong C# thì khi muốn khai báo một hàm không có giá trị trả về thì ta sẽ sử dụng hàm void, tuy ta hay gọi là hàm void nhưng thực ra nó là một kiểu dữ liệu với giá trị là null, trong TypeScript thì có thêm giá trị undefined.

function showMessage(): void {
    alert("Success!");
}

let unusable: void = undefined;

Kiểu Null và Undefined

Cả hai kiểu này đều là giá trị của kiểu void, và cũng tương tự thì hai kiểu này rất ít sử dụng trong quá trình xây dựng dự án.

let u: undefined = undefined;
let n: null = null;

Như vậy là mình đã giới thiệu sơ lược về một số kiểu dữ liệu căn bản thường dùng trong TypeScript, vẫn còn một số kiểu nâng cao nữa nhưng mình sẽ trình bày ở một bài khác.

3. Lời kết

Trong bài viết mình có tham khảo nội dung từ trang chủ của TypeScript nên nếu bạn nào giỏi tiếng Anh có thể lên đó đọc sẽ tiện hơn, còn nếu bạn không rành tiếng Anh thì mình nghĩ nên đọc bài này vì dù gì tiếng Việt vẫn là tiếng mẹ đẻ của người Việt :)

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Facebook để được hỗ trợ nhanh nhất.