- vừa được xem lúc

Type Annotation và Type Inference trong TypeScript là gì?

0 0 25

Người đăng: Mai Ngọc Trí

Theo Viblo Asia

Khi làm việc với javascript chắc hẳn các bạn đã quá quen với việc dùng biến mà không cần phải quan tâm đến kiểu dữ liệu của nó là gì phải không? Đúng là mới đầu tiếp cận với Typescript mình cũng cảm thấy nó khá là phiền vì cần phải khai báo đủ type để nó chặt chẽ hơn. Lúc đó mình còn nghĩ: " JavaScript đã đủ tốt liệu có thực sự cần học TypeScript?". Hầu hết mọi người đều vẫn ổn khi không có nó. Nhưng khi đã quen với nó rồi các bạn sẽ nhận ra được một số lợi ích như là:

  • Với việc đặt type cho từng biến code của bạn sẽ dễ đoán và debug hơn.
  • Dễ dàng tổ chức code cho các dự án lớn, hỗ trợ OOP mạnh mẽ.
  • TypeScript có một bước biên dịch thành JavaScript, sẽ bắt tất cả các loại lỗi trước khi chúng chạy.
  • Typescript là mã nguồn mở vì vậy nó miễn phí và có cộng đồng hỗ trợ rất lớn.

Trong bài viết này, chúng ta sẽ làm quen với TypeScript bằng cách hiểu sự khác biệt giữa Type AnnotationType Inference. Mình sẽ cho rằng bạn là người đã hiểu biết ít nhiều về Javascript và về các kiểu cơ bản, như string, number và boolean. Nếu bạn không quen với các loại, hãy xem tài liệu ở đây để bắt đầu.

Type Annotation

Type Annotation có nghĩa là chúng ta sẽ cho typescript biết được biến đó sẽ có kiểu dữ liệu là gì. Để gán cho biến đó giá trị một cách chính xác, Chúng ta sẽ thêm dấu hai chấm và kiểu vào sau khai báo biến như này nè:

let color: string = 'blue';

Điều này có nghĩa là biến color sẽ nhận kiểu dữ liệu là string và nó chỉ được phép gán 1 chuỗi vào biến đó thôi. Nếu ta cố tình gán cho nó 1 dữ liệu là number thì nó sẽ có error như sau:

Type Inference

Type inference có nghĩa là typescript sẽ tự động đoán kiểu dữ liệu của biến đó là gì. Nếu bạn khai báo và khởi nó cùng với 1 giá trị cụ thể hoặc là một biểu thức nhất định.

let color = 'blue';

Ở đoạn code trên chúng ta chỉ khai báo biến và khởi tạo cho nó 1 giá trị là string và không hề khai báo kiểu dữ liệu cho nó. Nhưng typescript vẫn sẽ hiểu và tự động khai báo cho color có kiểu là string. Và nếu muốn thay đổi giá trị của color thì bắt buộc phải truyền vào đó một chuỗi. Nếu ta cố tình gán cho nó giá trị number thì sẽ gặp phải lỗi tương tự như trên.

Khi nào thì sử dụng Type Annotation

Type Inference giúp ta dễ dàng hơn khi sử dụng typescript nhưng không phải lúc nào cũng có thể dùng được nó. Vậy thì khi nào chúng ta sẽ sử dụng Type Annotation?

Delayed initialization

// TypeScript will assign the type to any
let color;

Đúng như vậy trong trường hợp này typescript vì chưa nhận được giá trị khởi tạo nào cả nên lúc này nó sẽ tự động gán cho kiểu dữ liệu là any.

Chẳng ai muốn khi đã dùng typescript mà vẫn phải nhận kiểu là any cả. Để khắc phục việc này thì chúng ta cần phải gán cho nó 1 kiểu dữ liệu mà mình mong muốn. Vậy lúc này chính là lúc cần phải sử dụng Type Annotation.

let color: string;
color = 'white'

Assigning multiple types

Đôi lúc chúng ta cũng cần 2 kiểu dữ liệu bên trong 1 biến đúng không? Ví dụ như mã màu chẳng hạn (000) hoặc (white). Lúc này chúng ta sẽ dùng thêm ký tự | ở giữa 2 kiểu dữ liệu như sau:

let color: (string | number) = 'white';

Trên đây là một chia sẻ nhỏ của mình về typescript hi vọng nó sẽ giúp bạn phần nào hiểu được typescript là gì và nó có gì đáng để theo đuổi hay không.

Cảm ơn bạn đã đọc bài viết của mình ???

Link tham khảo tại đây.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Type annotation vs Type Inference - Typescript

Trong bài viết này, chúng ta sẽ tìm hiểu kỹ về TypeScript bằng cách tìm hiểu sự khác biệt giữa kiểu chú thích và kiểu suy luận. Tôi sẽ cho rằng bạn có một số kinh nghiệm về JavaScript và biết về các kiểu cơ bản, như chuỗi, số và boolean.

0 0 32

- vừa được xem lúc

Tìm hiểu TypeScript và kiến thức cơ bản

TypeScript là gì. TypeScript sử dụng tất cả các tính năng của của ECMAScript 2015 (ES6) như classes, modules.

0 0 35

- vừa được xem lúc

TypeScript - P1: Vì sao TypeScript được yêu thích đến vậy?

Trải nghiệm thực tế. Trước khi là một Web Developer, tôi là một Mobile Developer và Java là thứ mà tôi từng theo đuổi.

0 1 58

- vừa được xem lúc

4 Tính năng rất hay từ TypeScript

Xin chào các bạn hôm nay mình xin chia sẽ những tính năng rất hay của TypeScript (TS), các bạn cùng tìm hiểu nhé. Ngoài việc set Type cho biến, tham số hay function thì ví dụ khi bạn nhìn vào một tham

0 0 82

- vừa được xem lúc

Các toán tử dễ gây nhầm lẫn trong javascript.

Có rất nhiều javascript operators như toán tử số học, gán, chuỗi ... Nhưng với các toán tử dưới đây thì có thể làm nhiều bạn còn nhầm lẫn nếu chưa hiểu rõ về chúng. Cú pháp: a ?? b.

1 0 28