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

1 số thứ sẽ khiến bạn pro Typescript (infer, extends,ternaries)

0 0 2

Người đăng: Đỗ Tú

Theo Viblo Asia

1.Giới thiệu

Chắc hẳn với 1 dev frontend thì việc sử dụng typescript là 1 thứ hết sức quen thuộc.Đặc biệt với sự update thư viện và ngôn ngữ hiện nay, typescript gần như là ngôn ngữ mặc định khi setup project.

Với việc mang hơi hướng OOP nhiều hơn là functional programming (đơn giản như cái tên của nó, nó ko hướng tới xử lý logical business mà xử lý về data).TypeScript có rất nhiều các utilities để handle data 1 cách nhanh chóng và thuận tiện(mặc dù nó khá lú @@).

1 số keyword cơ bản như type,interface,typeof,Genetic type đa số chúng ta đã thấy 1 vài lần khi làm với TS dù ở level nào. Vì vậy để đi sâu hơn vào xử lý data type cũng như usecases khi dùng chúng, mình sẽ giới thiệu 1 số keyword nâng cao hơn

2. Extends

  1. Syntax: image.png image.png Tương tự như với OOP,chúng ta có extends(kế thừa), trong TS, chúng ta dùng extends để kế thừa thuộc tính từ type hoặc interface khác.
  2. Advanced:
    Tuy nhiên chúng ta có thể thấy,điểm bất tiện trong việc sử dụng TS như trên là thiếu linh hoạt trong việc thay đổi type của properties -> khi muốn thay đổi type của A hoặc B, chúng ta phải thay đổi cả C để không gây lỗi,và mới những kiến trúc như DDD hay repository trong nestJS hoặc NodeJS thì việc sửa lại dữ liệu sẽ thật sự đau đầu.

    Vì vậy kết hợp với Generics có thể là 1 phương pháp tối ưu hơn:
    VD:image.png Giải thích:
    • Kết hợp ternaries với generics: Khai báo a với kiểu dữ liệu Generics<string> được truyền vào ứng với T(bạn có thể đặt trên khác ko nhất thiết phải là T).
    • T extends string : return về true hoặc false, có thể hiểu là 'nếu T có string'
    • Nếu T không có string hoặc number thì kết quả của Generics<string> sẽ là undefined

      Như ví dụ trên, chúng ta có thể thể thấy việc sử dụng Generics với ternaries khá hữu ích khi xử lý type of properties, nó sẽ được áp dụng trong 1 số usecases như sau:
  • Form field type
  • API response handler
  • Event Handler Systems
  • Database Query Builders
  • Theme Configuration
  • State Management Actions
  • Component Props with Variants image.png

3.Infer

  1. Khái niệm: Từ khóa infer được sử dụng để trích xuất/thu thập các types từ other types với conditional types. Giống như nói "tìm ra type này nên là gì và lưu trữ nó trong một biến".

    Nói dễ hiểu hơn thì: nó chỉ được sử dụng trong conditional types(như ví dụ với extends generics type bên trên). Và nó sẽ lấy type của properties của type truyền vào (T) và return ra 1 biến = type của properties.

  2. Ví dụ:image.png Giải thích:

  • T extends Array<infer U>: khởi tạo 1 giá trị mới là U,U sẽ ứng với type của item array được truyền vào
  • typeof b: như phần comment: b sẽ có type là Array<string | number>
  • => U = string | number => type Generics<typeof b> = number => a sẽ có type là number
  1. Advanced:
    • Kết hợp với ReturnType và Awaited: image.png
    • Usecase: Giả sử BE return cho FE hoặc đơn giản muốn convert từ string thành object thì ta có thể dùng Infer(còn tại sao lại dùng string hay object,đơn giản vì primitive luôn nhẹ hơn object) image.png Practice: image.png Hãy tự thử nghiệm để hiểu hơn về extends lẫn infer nhé

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 562

- 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 60

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

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

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ĩ: " JavaScr

0 0 45

- 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 61

- 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 77

- 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 105