TypeScript Handbook (Phần 1) - BasicType
Tổng hợp các kiểu dữ liệu của TypeScript từ trang handbook trong loạt bài về TypeScript. BasicType
Boolean
Kiểu boolean có hai giá trị là true hoặc false và cả Javascript lẫn TypeScript đều gọi là boolean.
let isDone: boolean = false;TypeScript
var isDone = false;JavaScript
Number
Tất cả giá trị số đều là kiểu number sử dụng dấu phẩy động, 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ó. Không chỉ hỗ trợ hệ thập lục phân (hexa), thập phân (decimal) mà còn hỗ trợ cả hệ bát phân và nhị phân.(Nhưng chắc là hiếm khi sử dụng hệ bát phân và hệ nhị phân.)
let decimal: number = 6; let hex: number = 0xf00d; let binary: number = 0b1010; let octal: number = 0o744;TypeScript
var decimal = 6; var hex = 0xf00d; var binary = 10; var octal = 484;JavaScript
String
Giá trị biến kiểu string được đặt trong ngoặc đơn hoặc ngoặc kép
let color: string = "blue"; color = 'red';TypeScript
var color = "blue"; color = 'red';JavaScript
- Chuỗi được đặt trong dấu Backquote(cái dấu này blog công ty mình không gõ được lên mọi người tìm google là ra nhé!), có thể thêm biến vào trong chuỗi bằng các đặt biến vào trong biểu thức ${ expr } (Để trống vào trong cũng OK.)
let fullName: string = `Bob Bobbington`; let age: number = 37; let sentence: string = `Hello, my name is ${ fullName }. I'll be ${ age + 1 } years old next month.`TypeScript
var fullName = "Bob Bobbington"; var age = 37; var sentence = "Hello, my name is " + fullName + ".\n\nI'll be " + (age + 1) + " years old next month.";JavaScript
Sử dụng theo cách này tiện lợi hơn. Hơn nữa nó sẽ tự xuống dòng mà không phải thêm \n
Array
Kiểu mảng có 2 cách để khai báo. Các phần tử của mảng đều chung 1 kiểu dữ liệu.
let list1: number[] = [1, 2, 3]; let list2: Array<number> = [1, 2, 3];TypeScript
var list1 = [1, 2, 3]; var list2 = [1, 2, 3];JavaScript
Tuple
Tuple là một tập các phần tử nhưng khác với kiểu mảng là các phần tử có kiểu dữ liệu khác nhau. Cần phải định nghĩa kiểu dữ liệu cho tất cả cá phần tử của mảng.
// Khai báo kieur tuple let x: [string, number]; // Khởi tạo x = ["hello", 10]; // OK // Khởi tạo sai x = [10, "hello"]; // LỗiTypeScript
// Khai báo var x; // Khởi tạo x = ["hello", 10]; // OK // Khởi tạo sai x = [10, "hello"]; // LỗiJavaScript
Khi cần truy cập đến các phần tử của nó thi có thể truy cập bằng index
console.log(x[0].substr(1)); // OK console.log(x[1].substr(1)); // Lỗi. Phần tử thứ 2 la kiểu number nên không thể sử dụng substrTypeScript
Trường hợp truy cập đến phần tử ngoài phạm vi đã khai báo, nó sẽ tự lặp lại kiểu dữ liệu cho các phần tử tiếp theo.
x[3] = "world"; // OK。 Có thể thêm 'string' theo tuần tự 'string | number' console.log(x[5].toString()); // OK。 Kiểu 'string' và 'number' đều có thể gọi toString x[6] = true; // Lỗi。 Không thểm thêm biến kiểu 'boolean' vì không them thứ tự 'string | number'TypeScript
Enum
TypeScript có thêm kiểu Enum. JavaScript không có kiểu Enum nhưng khi compile ra JavaScript thì đây là một cách làm tuyệt vời.
enum Color {Red, Green, Blue}; let c: Color = Color.Green;TypeScript
var Color; (function (Color) { Color[Color["Red"] = 0] = "Red"; Color[Color["Green"] = 1] = "Green"; Color[Color["Blue"] = 2] = "Blue"; })(Color || (Color = {})); ; var c = Color.Green;JavaScript
Biến Enum tự đánh số mặc định từ 0, nhưng chúng ta cũng có thể tự đánh số mà mình thích vào
enum Color {Red = 1, Green, Blue}; let c: Color = Color.Green;TypeScript
var Color; (function (Color) { Color[Color["Red"] = 1] = "Red"; Color[Color["Green"] = 2] = "Green"; Color[Color["Blue"] = 3] = "Blue"; })(Color || (Color = {})); ; var c = Color.Green;JavaScript
Cũng có thế đánh só cho tất cả phần tử của Enum.
enum Color {Red = 1, Green = 2, Blue = 4}; let c: Color = Color.Green;TypeScript
var Color; (function (Color) { Color[Color["Red"] = 1] = "Red"; Color[Color["Green"] = 2] = "Green"; Color[Color["Blue"] = 4] = "Blue"; })(Color || (Color = {})); ; var c = Color.Green;JavaScript
Khi đánh index cho phần tử của Enum rồi, có thể dùng index này để lấy phần từ của Enum.
enum Color {Red = 1, Green, Blue}; let colorName: string = Color[2]; alert(colorName); // GreenTypeScript
var Color; (function (Color) { Color[Color["Red"] = 1] = "Red"; Color[Color["Green"] = 2] = "Green"; Color[Color["Blue"] = 3] = "Blue"; })(Color || (Color = {})); ; var colorName = Color[2]; alert(colorName); // GreenJavaScript
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ó.
let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // bây giờ là booleanTypeScript
var notSure = 4; notSure = "maybe a string instead"; notSure = false; // bây giờ là booleanJavaScript
Kiểu Object trong TypeScript cũng khá giống với kiểu Any nhưng kiểu Any thì gọi được method còn kiểu Object không thể gọi được method.
let notSure: any = 4; notSure.ifItExists(); // OK。 notSure.toFixed(); // OK ; let prettySure: Object = 4; prettySure.toFixed(); // LỗiTypeScript
Kiểu Any có thể sử dụng chung với các kiểu dữ liệu khác
let list: any[] = [1, true, "free"]; // Mảng có thể bao gồm kiểu any list[1] = 100;TypeScript
var list = [1, true, "free"]; // Mảng có thể bao gồm kiểu any list[1] = 100;JavaScript
Void
Void đại diện cho trường hợp không có kiểu dữ liệu. Hay được sử dụng trong các function không trả về dữ liệu.
function warnUser(): void { alert("This is my warning message"); }TypeScript
function warnUser() { alert("This is my warning message"); }JavaScript
Biến Void chỉ được gán là undefined hoặc null.
let unusable: void = undefined;TypeScript
Null và Undefined
Kiểu Null và kiểu Undefined chỉ được gắn với giá trị tương ứng như kiểu của nó.
let u: undefined = undefined; let n: null = null;TypeScript
Có thể gán mặc định null và undefined cho kiểu dữ liệu khác nhưng khi thêm flag --strictNullChecks thì chỉ có thể gán cho kiểu void hoặc gán đúng từng loại. Trong trường muốn gán null và undefined có thể sử dụng kiểu chung (VD: string | null | undefined)
Trên trang chủ của TypeScript họ khuyến khích nên sử dụng --strictNullChecks
Never
Kiểu Never biểu thị việc không trả về giá trị gì.(Sử dụng cái này có vẻ hơi khó)
// function này throw ra Error nên nó sẽ không chạy đc đến cuối cùng function error(message: string): never { throw new Error(message); } ; // Nếu trả return kêt quả cảu function trả về kiểu never thì giá trị trả về hàm này cũng kiểu never function fail() : never { return error("Something failed"); } ; // Hàm này chạy vong lặp vô hạn cũng không chạy đến cuối cùng function infiniteLoop(): never { while (true) { } }TypeScript
Type assertions
Đây là dạng ép kiểu trong TypeScript
let someValue: any = "this is a string"; ; let strLength1: number = (<string>someValue).length; let strLength2: number = (someValue as string).length;TypeScript
var someValue = "this is a string"; ; var strLength1 = someValue.length; var strLength2 = someValue.length;JavaScript
Trường hợp sử dụng JSX chỉ có thể ép kiểu được style.
Từ khóa » ép Kiểu Typescript
-
Kiểu Dữ Liệu Nâng Cao Trong TypeScript - Comdy
-
Cách ép Kiểu Trong Javascript (chuyển đổi Kiểu Dữ Liệu) - Freetuts
-
TypeScript - Các Kiểu Dữ Diệu Cơ Bản (Bacsic Type) - Viblo
-
Ép Kiểu Trong JavaScript | Học Lập Trình JavaScript
-
Các Kiểu Dữ Liêu Cơ Bản Trong Type Script - AI Design
-
ép Kiểu Trong Typescript | Hay-là - Hay-là | Năm 2022, 2023
-
Khi Nào Thì Sử Dụng Generics Trong TypeScript | TopDev
-
Bộ Câu Hỏi Phỏng Vấn Typescript Phần 2 - KungFu Tech
-
Các Kiểu Dữ Liệu, Biến Và Các Kỹ Thuật Liên Quan Tới Hàm Trong ...
-
Làm Thế Nào để ép Kiểu Integer Cho Một Số Hoặc Một String Số Trong ...
-
Cách Ép Kiểu String, Number, Boolean Trong Javascript
-
Bài 7: Type Inference & Type Assertion - Yêu Lập Trình
-
Generic Type Trong Typescript - Hành Trang Lập Trình Blog
-
Khi Nào Thì Sử Dụng Generics Trong TypeScript - Blog Của Tài Vũ