TypeScript 2.0 ngay lúc này đã sẵn sàng!

TypeScript 2.0 ngay lúc này đã sẵn sàng!
access_time 9/26/2016 12:00:00 AM
person Đào Minh Giang

TypeScript 2.0 ngay lúc này đã sẵn sàng!

 Hôm nay, chúng tôi vui mừng thông báo việc phát hành phiên bản cuối cùng của TypeScript 2.0!

 TypeScript 2.0 đã hoàn thành một hành trình lớn lao của toàn đội, cùng một số đóng góp từ cộng đồng và các đối tác dài lâu. TypeScript 2.0 đưa tới một số tính năng mới mẻ nâng cao hiệu quả cho nhà phát triển, các tiến bộ của TypeScript đồng hành cùng sự phát triển của ECMAScript, cung cấp khả năng mỏ rộng cho các thư viện và công cụ JavaScript, tăng cường dịch vụ ngôn ngữ thông qua việc nâng cao kinh nghiệm khi lần đầu làm việc với nhiều công cụ.

 Để trải nghiệm, bạn có thể download TypeScript cho Visual Studio 2015 (cần cập nhật Update 3), lấy về thông qua NuGet, và bắt đầu sử dụng TypeScript 2.0 với Visual Studio Code, hoặc cài đặt thông qua npm:

 npm install -g typescript@2.0

Với người dùng phiên bản Visual Studio “15” Preview, TypeScript sẽ được gộp cùng ở phiên bản Preview kế tiếp.

 

Hành trình 2.0

Hai năm trước đây, chúng tôi đã đặt ra lịch trình cho phiên bản 2.0. TypeScript 1.0 đã thành công thông qua việc chỉ ra cho các nhà phát triển tiềm năng của JavaScript khi kết hợp với các kiểu tĩnh. Việc kiểm tra lỗi khi biên dịch đã được tiết kiệm nhiều giờ cho việc tìm lỗi, và các công cụ biên tập TypeScript đem đến cho các nhà phát triển việc tăng hiệu suất cao khi bắt tay vào xây dựng các ứng dụng JavaScript lớn. Tuy nhiên để hoàn toàn trở thành tập cha của ngôn ngữ phổ biến trên toàn thế giới, TypeScript vẫn phải còn nhiệu việc cần làm.

TypeScript 1.1 đem lại sự mới mẻ bằng việc hoàn thành việc viết lại trình biên dịch làm tăng tốc gấp 4 lần. Trình biên dịch mới cho phép linh hoạt hơn, lặp nhanh hơn và cung cập một hiệu suất cơ bản cho các phiên bản tương lai. Cùng thời gian đó, kho mã nguồn TypeScript được di chuyển tới GitHub nhằm khuyến khích sự tham gia của cộng đồng và cung cấp một nền tảng tốt hơn cho việc chung tay phát triển.

TypeScript 1.4 và 1.5 giới thiệu rất nhiều tính năng hỗ trợ cho ES2015/ES6 hướng theo ngôn ngữ JavaScript tương lai. Ngoài ra, TypeScript 1.5 giới hiệu việc hỗ trợ module và decorator cho phép hỗ trợ Angular 2, khi đó đội phát triển Angular 2 sử dụng TypeScript để phát triển đồng thời làm việc cùng đội phát triển TypeScript đưa thêm các tính năng theo yêu cầu riêng của họ.

 

TypeScript 1.6 – 1.8 được phân phối với sự cải tiến về hệ thống kiểu đáng kể, với mỗi phiên bản mới đều thể hiện băng việc thêm các mẫu JavaScript và  cung cấp khả năng hỗ trợ các thư viện JavaScript chính. Đồng thời, các phiên bàn này cũng hỗ trợ ES* và thể hiện quá trình biên dịch với nhiều tính năng kiểm tra lỗi chi tiết.

Với việc phát hành phiên bản 2.0 lần này,  TypeScript đem đến các đặc tính ECMAScript mới nhất, hỗ trợ rộng cho các thư viện và công cụ JavaScript , và một dịch vụ ngôn ngữ là nguồn lực nâng cao kinh nghiệm làm việc lần đầu trên hầu hết các công cụ biên dịch chính; tất cả chúng mang lại hiệu suất và khả năng mở rộng trải nghiệm khi phát triển JavaScript.

 

Cộng đồng TypeScript.

Từ khi phiên bản 1.0, TypeScript đã phát triển không chỉ như một ngôn ngữ mà còn phát là một cộng đồng. Tháng trước, TypeScript đã có hơn 2 triệu download trên npm so với cùng tháng đó năm trước chỉ là 275K download. Ngoài ra, các phiên bản TypeScript phát hành chưa chính thức còn được sự quan tâm của trên 2000 người dùng tham gia thảo luận trên GitHub và 1500 người đề xuất các vấn đề khúc mắc. Mặt khác chúng tôi cũng tiếp nhận đề xuất yêu cầu (PR – Pull Request) bởi trên 150 người từ việc sửa lỗi đến các nguyên mẫu và các tính năng chính.

DefinitelyTyped là một ví dụ khác về sự phát triển cộng đồng. Bắt đầu là một kho nhỏ chứa các file khai báo (các file làm nhiệm vụ mô tả về các thành phần JavaScript cho TypeScript sử dụng),  hiện nay đã có tới hơn 2000 thư viện đã được viết bằng tay với sự đóng góp của 2500 cá nhân. Nó hiện là nơi mô tả chính thức các thư viện JavaScript lớn nhất mà chúng ta biết. Bằng việc xây dựng DefinitelyTyped, cộng đồng TypeScript đã không chỉ hỗ trợ việc sử dụng TypeScript với các thư viện JavaScript có sẵn mà còn giúp việc định nghĩa và hiểu các mã JavaScript hơn.

 

Cộng đồng TypeScript và JavaScript đã đóng vai trò chính cho sự thành công của TypeScript đã đạt được hôm nay, và dù đóng góp của bạn chỉ là việc đăng twiter, thử nghiệm hay đưa ra các vấn đề hay sử dụng TypeScript trong dự án của mình, chúng tôi biết ơn sự ủng hộ tiếp tục của các bạn!

  

Có gì mới trong TypeScript 2.0?

TypeScript mang đến một vài tính năng mới so với phiên bản 1.8, một số chúng được mô tả chi tiết trong phiên bản 2.0 Beta và Release Candidate. Sau đây, ta sẽ chú trọng vào một số các tính năng lớn trên TypeScript, nhưng nếu muốn bạn có thể đọc thêm về tagged unions, kiểu mới never type, this type cho các hàm, hỗ trợ glob trong tsconfig, và tất cả các tính năng mới khác trên wiki của chúng tôi.

 

Tiếp nhận file khai báo (.d.ts) đơn giản

Typings và tsd là các công cụ tuyệt với cho hệ sinh thái TypeScript. Cho đến giờ, các công cụ quản lý gói giúp người dùng lấy các file .d.typescript từ DefinitelyTped cho dự án của mình một cách nhanh nhất. Mặc dù với các công cụ này, một điểm khó nhất cho những người mới dùng là học cách lấy về và quản lý các file khai báo từ các công cụ quản lý gói.

Để bắt đầu sử dụng các file khai báo trong phiên bản 2.0 sẽ rất dễ dàng. Để lấy về khai báo cho một thư viện như lodash, tất cả những gì bạn cần là npm:

 

npm install -s @types/lodash

Lệnh cài đặt trên sẽ cài @types/lodash ở phạm vi gói (scoped package) mà TypeScript 2.0 sẽ tự tham chiếu khi ta import lodash ở bất kỳ đâu trong chương trình. Điều này có nghĩa là bạn không cần thêm bất kỳ công cụ nào và file .d.ts của bạn có thể dùng với các thành phần phụ thuộc khác ở file package.json.

 

Đáng chú ý là cả typings và tsd sẽ vẫn tiếp tục làm việc với các dự án cũ, tuy nhiên nó không đảm bảo sự tương thích với phiên bản 2.0 của các file khai báo thông qua các công cụ này. Vì thế, chúng tôi nhấn mạnh rằng bạn nên cập nhật với npm mới cho TypeScript 2.0 và các phiên bản kế tiếp.

 

Các kiểu non-nullable

JavaScript có hai giá trị dạng "rỗng" là null và undefined. Nếu sử dụng null dẫn đến các sai lầm hàng tỷ USD, undefined  cũng làm tăng gấp đôi tổn thất này. Hai giá trị này là một nguồn gốc cực lớn các lỗi trong thế giới JavaScript bởi vì người dùng thường quên kiểm tra null hay undefined khi nó được trả về từ các API.

Trong TypeScript 2.0, null và undefined có kiểu riêng của chúng cho phép các nhà phát triển thể hiện rõ việc chấp nhận giá trị null/undifined. Bây giờ, khi ta cần khai báo một cái gì cần chứa giá trị number hoặc null, bạn có thể mô tả nó với việc sử dụng kiểu uninon dạng number | null (đọc là "number hay null ").

Bởi đây là một sự thay đổi có thể dẫn đến việc phá vỡ các mã nguồn đã có, do đó chúng tôi đã thêm vào một chế độ  --strictNullChecks trong tùy chọn khi sử dụng hành vi này. Tuy nhiên, ở tương lai việc sử dụng cờ này sẽ giúp ta kiểm soát tốt các lỗi null/undefined. Để đọc thêm về kiểu non-nullable, bạn có thể xem thêm ở liên kết PR trên Github : https://github.com/Microsoft/TypeScript/pull/7140

 

Các kiểu được phân tích qua luồng điều khiển

TypeScript thực hiện phân tích luồng điều khiển từ phiên bản 1.8, nhưng từ phiên bản 2.0 chúng tôi mở rộng chúng để phân tích nhiều luồng điều khiển hơn để tính toán ra các kiểu có thể trả về ở bất kỳ thời điểm nào. Khi kết hợp cùng các kiểu non-nullable, lúc này TypeScript có thể thực hiện kiểm tra phức tạp hơn, như phân tích xác định rõ việc gán giá trị.

 

function f(condition: boolean) {
    let result: number;
    if (condition) {
        result = computeImportantStuff();
    }
 
    // Whoops! 'result' có thể không bao giờ được khởi tạo giá trị!
    return result;
}

 

Chúng tôi muốn cảm ơn tới sử đóng góp ban đầu của Ivo Gabe de Wolff và các thông tin phản hồi tích cực về tính năng này. Bạn có thể hiểu rõ hơn về phân tích luồng điều khiển trên liên kết PR sau: https://github.com/Microsoft/TypeScript/pull/8010

 

Bổ ngữ readonly

Lập trình chặn việc thay đổi (immutable programming) trong TypeScript sẽ dễ dàng hơn. Từ phiên bản TypeScript 2.0, bạn có thể khai báo thuộc tính là chỉ đọc (read-only)

 

class Person {
    readonly name: string;
 
    constructor(name: string) {
        if (name.length < 1) {
            throw new Error("Empty name!");
        }
 
        this.name = name;
    }
}
 
// Lỗi! 'name' là chỉ đọc .
new Person("Daniel").name = "Dan";

 

Bất kỳ truy cập get (get-accessor) mà không có thiết lập (set-accessor) cũng được xem là dạng chỉ đọc.

 

Vậy kế là gì

TypeScript là sử mở rộng JavaScript. Bắt đầu với cùng cú pháp và ngữ nghĩa mà hàng triệu nhà phát triển JavaScript ngày nay, TypeScript cho phép các nhà phát triển sử dụng mã JavaScript có sẵn, kết hợp chặt chẽ với các thư viện JavaScript phổ biến, và gọi mã TypeScript từ JavaScript. Các kiểu tĩnh tùy chọn của TypeScript cho phép các nhà phát triển JavaScript sử dụng các công cụ phát triển hiệu suất cao như kiểm tra tĩnh (static checking) và sắp xếp lại mã (code refactoring) khi phát triển các ứng dụng JavaScript.

Kế đến, chúng tôi sẽ tiếp tục làm việc với các đối tác và cộng đổng để phát triển hệ thống kiểu của TypeScript cho phép người dùng biểu thị JavaScript trong một hình thức kiểu tĩnh. Ngoài ra, chúng tôi sẽ tập trung vào việc tăng cường dịch vụ ngôn ngữ TypeScript và tập các tính năng cho công cụ để các công cụ phát triển trở nên thông minh hơn và xa hơn là tăng tốc hiệu xuất cho nhà phát triển.

Xin cảm ơn tới tất cả mọi người đã đồng hành cùng hành trình 2.0! Phản hồi của bạn và sự nhiệt tình đã mang lại ngôn ngữ và hệ sinh thái TypeScript hôm nay. Chúng tôi hy vọng là các bạn sẽ phân khích với phiên bản 2.0 và các phiên bản kế tiếp.

 

Nếu bạn vẫn chưa dùng TypeScript, hay thử nó ! Chúng tôi muốn nghe các phản hồi từ các bạn.

 

Happy hacking !

 

Đội phát triển TypeScript


vertical_align_top
share
Chat...