Typescript là gì? Ngôn ngữ kịch bản kế thừa từ Javascript

1549
10-07-2021
Typescript là gì? Ngôn ngữ kịch bản kế thừa từ Javascript

Typescript có lẽ vẫn còn là một khái niệm mới ít phổ biến ngay cả trong lĩnh vực công nghệ thông tin, nhất là với những ai không chuyên lập trình. Một ngôn ngữ kịch bản dựa trên JavaScript nhưng lại hỗ trợ tốt cho hướng đối tượng, được tạo ra bởi Microsoft nhưng lại cấp giấy phép nguồn mở,… Còn điều gì thú vị đằng sau ngôn ngữ này nữa? hãy cùng BizFly Cloud đi tìm câu trả lời trong bài viết hôm nay.

TypeScript là gì?

Tên như ý nghĩa, TypeScript là một ngôn ngữ kịch bản (script) mã nguồn mở do Microsoft phát triển, kế thừa từ nền tảng của JavaScript và bổ sung khả năng làm việc với các kiểu dữ liệu tĩnh (static type).

TypeScript có thể sử dụng để phát triển các ứng dụng chạy ở cả client-side (Angular2) và server-side (NodeJS). TypeScript sử dụng tất cả các tính năng của của ECMAScript 2015 (ES6) như classes, modules. Trước khi TypeScript ra đời, cũng có một số thư viện như CoffeScript và Dart được phát triển bởi Google hỗ trợ những concept trên nhưng chúng lại sử dụng cú pháp mới hoàn toàn. Do đó, tuy ra đời sau nhưng TypeScript vẫn đang nhận được sự phản hồi tích cực từ các lập trình viên.

TypeScript giúp phát triển ứng dụng chạy ở Client- Side

TypeScript giúp phát triển ứng dụng chạy ở Client- Side

Vì sao nên sử dụng TypeScript

Dễ phát triển dự án lớn

Trong một thời gian dài, các lập trình viên đã luôn gặp khó khăn khi muốn làm việc với hướng đối tượng hay thậm chí là khái niệm căn bản về kiểu dữ liệu trong JavaScript. Rất nhiều lỗi compile time không thể phát hiện tự động như gán dữ liệu sai kiểu hay việc tạo class khó khăn khiến lập trình viên không muốn sử dụng JavaScript quá nhiều.

TypeScirpt ra đời và khắc phục những nhược điểm trên bằng cách áp dụng các kỹ thuật mới nhất của ES6 cũng như khả năng làm việc với kiểu dữ liệu tĩnh. Giờ đây các biến được kiểm soát kiểu dữ liệu chặt chẽ, lỗi kiểu cũng có thể được code editor chỉ ra ngay trong quá trình viết mã giúp việc phát triển các dự án lớn dễ dàng hơn.

Nhiều lựa chọn Framework

Hiện nay các JavaScript Framework đã dần khuyến khích nên sử dụng TypeScript để phát triển vì những đặc tính ưu việt, ví dụ như AngularJS 2.0 và Ionic 2.0.

Mã nguồn mở

Ngay cả Microsoft từng tuyên bố "Linux là một căn bệnh ung thư" giờ đây cũng đã cởi mở hơn với mã nguồn mở, dẫn đến sự ra đời của TypeScript. Có thể thấy những lợi ích của nguồn mở là không cần bàn cãi: miễn phí, an toàn, linh hoạt và có cộng đồng hỗ trợ nhiệt tình.

Tương thích tốt với JavaScript

Bản chất của TypeScript là biên dịch tạo ra các đoạn mã JavaScript nhờ các trình biên dịch như Babel nên bạn có thể chạy bất kì ở đâu miễn là môi trường có hỗ trợ JavaScript. 

Trong quá trình biên dịch các khai báo kiểu được kiểm tra và nếu không phát hiện lỗi, chúng sẽ được loại bỏ để trở thành JavaScript quen thuộc. Điều này cũng có nghĩa là bạn có thể sử dụng trộn lẫn cú pháp của JavaScript vào bên trong TypeScript, giúp việc tiếp cận TypeScript dễ dàng hơn.

Chức năng của TypeScript

Static Typing

Một trong những tính năng đáng giá nhất của TypeScript là kiểu dữ liệu tĩnh - static type. Dĩ nhiên nếu đã quen với cú pháp JavaScript thông thường thì bạn có thể bỏ qua bước khai báo kiểu này và để compiler tự xác định, nhưng có thể chắc chắn rằng phần lớn lập trình viên đã mong chờ khả năng khai báo kiểu này khi làm việc lần đầu với JavaScript, nhất là khi đã từng sử dụng các ngôn ngữ lập trình như C/Java,… Khả năng khai báo kiểu giúp kiểm soát các biến tốt hơn và đồng thời phát hiện sớm, giảm thiểu lỗi trong quá trình biên dịch/runtime.

Ví dụ, với JavaScript trước đây ta có thể khai báo một biến và gán bất kỳ kiểu dữ liệu nào cho nó. Trong TypeScript, do đã định kiểu trước nên kiểu dữ liệu của giá trị gán vào cùng kiểu với biến, nếu gán sai sẽ có lỗi và không thể biên dịch:

typescript là gì - Ảnh 1.

Script Result // Biến Age dùng để lưu số tuổi // của nhân viên trong TypeScript var age:Number = 15 //OK console.log(age) var age:Number = "fifteen" //Lỗi console.log(age)

TypeScript hỗ trợ 7 kiểu dữ liệu cơ bản bao gồm: boolean, number, string, array, enum, any, void

Interfaces

Interface hay giao diện là một khái niệm quen thuộc trong hướng đối tượng, nó quy định cấu trúc bắt buộc (thuộc tính, phương thức, sự kiện) mà mọi thực thể (object) triển khai (implement) interface đó phải tuân thủ chặt chẽ. Interfaces trong TypeScript cũng dựa trên tinh thần đó, sử dụng static types để khai báo các thành phần và ràng buộc kiểu, nhưng chỉ dừng lại ở khai báo mà không implement.

Lấy ví dụ về Interface IPerson

interface IPerson {

fullName: string; //fullName phải là kiểu string

gender: boolean; //gender phải là kiểu boolean

sayHi: () => string; //method này trả về kiểu string

}

Khi implement interface IPerson, object phải implement đầy đủ các thuộc tính (fullname, gender), phương thức (sayHi) và tuân thủ ràng buộc kiểu đã đặt ra. Object cũng có thể bổ sung tùy ý các thành phần riêng mà interface không quy định. Khai báo như sau là hợp lệ:

var customer: IPerson = {

fullName: "Tom Riddle", //gán đúng kiểu string

gender: true, //gán đúng kiểu boolean

age: "twenty", //thuộc tính riêng, không ràng buộc kiểu

sayHi: (): string => {

return "Hi there"; //trả đúng kiểu string

},

};

Classes

Classes cũng là khái niệm cốt lõi khác trong hướng đối tượng, sử dụng để quy định cấu trúc của một lớp các đối tượng. Classes trong TypeScript là tính năng có từ phiên bản ECMAScript 2015 (ES6), nó có tương đối đầy đủ các tính năng của classes trong các ngôn ngữ lập trình thuần hướng đối tượng như constructor, inheritance, abstract classes, interface implementations,…

Modules

Khả năng phân rã thành modules là rất quan trọng trong các dự án cần tái sử dụng mã nguồn và khả năng mở rộng về sau. Module hóa cũng giúp tổ chức mã nguồn khoa học hơn và dễ đọc, dễ bảo trì. TypeScript cho phép export các class, interfaces, functions,… thành một module để sử dụng ở nơi khác và import các module có sẵn để tận dụng code.

Có 2 kiểu module chính là Internal Module (sử dụng trong cùng file js) và External Module (sử dụng module từ nhiều file JS khác nhau). Do JS truyền thống quản lý file dựa trên cặp thẻ , trình duyệt nạp từng file (và các module trong đó) một cách tuyến tính, khiến không có cách nào chạy bất đồng bộ các module này.

TypeScript xử lý vấn đề bằng cách sử dụng các thư viện RequireJS cho client side và Nodejs cho server side để liên kết các file JS và sử dụng bất đồng bộ các module.

Generics

Generics là một kỹ thuật lập trình tiên tiến, khi người ta tách kiểu dữ liệu ra khỏi logic xử lý và cấu trúc dữ liệu. Với Generics code chỉ cần viết một lần và kiểu dữ liệu có thể được quy định ở compile time, giúp nâng cao khả năng tái sử dụng. Generics trong TypeScript gần tương tự C#, không chỉ dùng cho hàm mà còn cả Classes và Interfaces.

function getArray(items : T[] ) : T[] {

return new Array().concat(items);

} //Trả về mảng có kiểu bất kỳ được truyền vào

let myNumArr = getArray([100, 200, 300]);

let myStrArr = getArray(["Hello", "World"]);

myNumArr.push(400); // OK

myStrArr.push("Hello TypeScript"); // OK

myNumArr.push("Hi"); // Compiler Error

myStrArr.push(500); // Compiler Error

Ưu nhược điểm khi dùng TypeScript

Ưu điểm

  • Miễn phí, nguồn mở
  • Giảm lỗi compile time
  • Tính Module hóa cao
  • Code dễ đọc, dễ gỡ lỗi và bảo trì
  • Tối ưu cho lập trình hướng đối tượng

Nhược điểm

  • Cần trình biên dịch riêng
  • Thiết lập khó khăn
  • Vẫn là phiên bản mở rộng của JavaScript

Hướng dẫn cài đặt TypeScript

Nếu bạn đã có cái nhìn tổng quan về TypeScript và muốn bắt đầu ngay, sau đây là hướng dẫn cài đặt TypeScript. Nhìn chung nếu đã làm việc với node package manager và các framework JS thì mọi thứ khá đơn giản.

Bước đầu tiên bạn cần cài đặt Node.js và một dependency manager như npm. Trong npm bạn gõ lệnh sau

npm install -g typescript

typescript là gì - Ảnh 4.

Sau đó để kiểm tra cài đặt thành công, mở cửa sổ Terminal và nhập lệnh

tsc –version

typescript là gì - Ảnh 5.

Nếu cài đặt thành công, bạn sẽ nhìn thấy dòng thông tin về phiên bản của TypeScript.

Hi vọng bài viết này của chúng tôi đã giúp các bạn có thêm kiến thức về TypeScript – một ngôn ngữ kịch bản hỗ trợ rất tốt cho lập trình hướng đối tượng. Chúc các bạn khởi đầu thuận lợi với ngôn ngữ mới này và hãy luôn theo dõi BizFly Cloud để cập nhật những công nghệ mới nhất cùng chúng tôi.

SHARE
Hỗ trợ kỹ thuật
Kinh doanh, CSKH