TypeScript

**TypeScript** là một ngôn ngữ lập trình được phát triển và duy trì bởi Microsoft. Nó là một siêu tập hợp cú pháp nghiêm ngặt của JavaScript và thêm tính năng kiểu tĩnh tùy chọn vào ngôn ngữ. TypeScript được thiết kế để phát triển các ứng dụng lớn và biên dịch sang JavaScript. Vì TypeScript là một siêu tập hợp của JavaScript, các chương trình JavaScript hiện có cũng là các chương trình TypeScript hợp lệ về mặt cú pháp, tuy nhiên, chúng có thể bị lỗi type-check.

TypeScript có thể được sử dụng để phát triển các ứng dụng JavaScript cho cả thực thi phía máy khách và phía máy chủ (như với Node.js hoặc Deno). Có nhiều tùy chọn có sẵn để biên dịch. Có thể sử dụng Trình biên dịch TypeScript mặc định, hoặc có thể sử dụng trình biên dịch Babel để chuyển đổi TypeScript sang JavaScript.

TypeScript hỗ trợ các tệp định nghĩa có thể chứa thông tin kiểu của các thư viện JavaScript hiện có, giống như tệp tiêu đề C ++ có thể mô tả cấu trúc của tệp đối tượng hiện có. Điều này cho phép các chương trình khác sử dụng các giá trị được xác định trong tệp như thể chúng là các thực thể TypeScript được nhập tĩnh. Có các tệp tiêu đề của bên thứ ba cho các thư viện phổ biến như jQuery, MongoDB và D3.js. Tiêu đề TypeScript cho các mô-đun cơ bản của Node.js cũng có sẵn, cho phép phát triển các chương trình Node.js trong TypeScript.

Bản thân trình biên dịch TypeScript được viết bằng TypeScript và được biên dịch sang JavaScript. Nó được cấp phép theo Giấy phép Apache 2.0. TypeScript được bao gồm như một ngôn ngữ lập trình hạng nhất trong Microsoft Visual Studio 2013 Update 2 trở lên, bên cạnh C # và các ngôn ngữ Microsoft khác. Một phần mở rộng chính thức cho phép Visual Studio 2012 cũng hỗ trợ TypeScript. Anders Hejlsberg, kiến trúc sư chính của C # và người tạo ra Delphi và Turbo Pascal, đã tham gia vào quá trình phát triển TypeScript.

## Lịch sử
TypeScript được công bố lần đầu tiên vào tháng 10 năm 2012 (ở phiên bản 0.8), sau hai năm phát triển nội bộ tại Microsoft. Ngay sau khi thông báo, Miguel de Icaza đã ca ngợi bản thân ngôn ngữ này, nhưng chỉ trích việc thiếu hỗ trợ IDE trưởng thành ngoài Microsoft Visual Studio, vốn chưa có trên Linux và OS X vào thời điểm đó. Ngày nay, có hỗ trợ trong các IDE khác, đặc biệt là trong Eclipse, thông qua một trình cắm thêm do Palantir Technologies đóng góp. Các trình soạn thảo văn bản khác nhau, bao gồm Emacs, Vim, Webstorm, Atom  và Visual Studio Code của riêng Microsoft cũng hỗ trợ TypeScript.

TypeScript 0.9, được phát hành vào năm 2013, đã thêm hỗ trợ cho generic.

TypeScript 1.0 được phát hành tại hội nghị nhà phát triển Build của Microsoft vào năm 2014. Visual Studio 2013 Update 2 cung cấp hỗ trợ tích hợp cho TypeScript. Vào tháng 7 năm 2014, nhóm phát triển đã công bố một trình biên dịch TypeScript mới, đạt hiệu suất gấp 5 lần. Đồng thời, mã nguồn, ban đầu được lưu trữ trên CodePlex, đã được chuyển sang GitHub.

Vào ngày 22 tháng 9 năm 2016, TypeScript 2.0 đã được phát hành; nó đã giới thiệu một số tính năng, bao gồm khả năng cho các lập trình viên tùy ý ngăn các biến được gán giá trị , đôi khi được gọi là sai lầm hàng tỷ đô la.

TypeScript 3.0 được phát hành vào ngày 30 tháng 7 năm 2018, mang đến nhiều bổ sung ngôn ngữ như tuple (bộ giá trị) trong rest parameter (tham số phần còn lại) và spread expression (biểu thức trải rộng), rest parameter với các kiểu tuple, generic rest parameter, v.v.

TypeScript 4.0 được phát hành vào ngày 20 tháng 8 năm 2020. Mặc dù 4.0 không giới thiệu bất kỳ thay đổi đột phá nào, nhưng nó đã bổ sung các tính năng ngôn ngữ như Hệ thống JSX tùy chỉnh và các kiểu Variadic Tuple (bộ giá trị đa dạng).

## Thiết kế
TypeScript bắt nguồn từ những thiếu sót của JavaScript đối với việc phát triển các ứng dụng quy mô lớn ở cả Microsoft và các khách hàng bên ngoài của công ty này. Những thách thức đối với việc xử lý mã JavaScript phức tạp đã dẫn đến nhu cầu về công cụ tùy chỉnh để dễ dàng phát triển các thành phần trong ngôn ngữ này.

Các nhà phát triển TypeScript đã tìm kiếm một giải pháp không phá vỡ tính tương thích với tiêu chuẩn và khả năng hỗ trợ đa nền tảng của nó. Biết rằng đề xuất tiêu chuẩn ECMAScript hiện tại hứa hẹn hỗ trợ cho lập trình dựa trên lớp trong tương lai, TypeScript đã được xây dựng dựa trên đề xuất đó. Điều này dẫn đến một trình biên dịch JavaScript với một tập hợp các phần mở rộng ngôn ngữ cú pháp, một siêu tập hợp dựa trên đề xuất ECMAScript, chuyển đổi các phần mở rộng đó thành JavaScript thông thường. Theo nghĩa này, tính năng lớp của TypeScript là bản xem trước những gì mong đợi của ECMAScript 2015. Một khía cạnh duy nhất không có trong đề xuất, nhưng được thêm vào TypeScript, là tính năng kiểu tĩnh tùy chọn, cho phép phân tích ngôn ngữ tĩnh, tạo điều kiện hỗ trợ công cụ và IDE.

### Hỗ trợ ECMAScript 2015
TypeScript bổ sung hỗ trợ cho các tính năng như lớp, mô-đun và cú pháp hàm mũi tên (arrow function syntax) như được định nghĩa trong tiêu chuẩn ECMAScript 2015.

## Xem thêm

* JavaScript
* C (ngôn ngữ lập trình) 
*C++

## Tham khảo

## Liên kết ngoài