- GitHub - gvergnaud/hotscript: A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.
- A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know. - gvergnaud/hotscript
Bài viết được dịch bởi AI.
Bài viết được tóm tắt bởi durumis AI
- Việc nhập kiểu dữ liệu trực tiếp trong TypeScript có thể làm giảm khả năng đọc, và việc sử dụng kiểu dữ liệu bậc cao có thể giúp định nghĩa rõ ràng hơn.
- Thư viện hotscript có thể được sử dụng để quản lý định nghĩa kiểu dữ liệu một cách ngắn gọn dựa trên kiểu dữ liệu bậc cao.
- Đề xuất sử dụng thư viện hotscript với nhiều tính năng để tăng khả năng đọc của mã và sử dụng theo nhu cầu.
Hãy lấy một đoạn mã làm ví dụ.
Đó là mã chuyển đổi chữ cái đầu tiên của mỗi từ thành chữ hoa.
const firstLetterUpperCase = (str : string) => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" "); } console.log(firstLetterUpperCase("hello world"));
Tuy đơn giản nhưng điều này khiến kiểu trả về (return type) trở thành chuỗi (string), và việc suy luận kiểu dữ liệu trở nên không thể.
type FirstLetterUppercase = T extends ${infer R}${infer RestWord} ${infer RestSentence} ? ${Uppercase<R>}${RestWord} ${FirstLetterUppercase<RestSentence>} : T extends ${infer R}${infer RestWord} ? ${Uppercase<R>}${RestWord} : never; const firstLetterUpperCase= (str : T) : FirstLetterUppercase => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" ") as FirstLetterUppercase ; } console.log(firstLetterUpperCase("hello world"));
Tất nhiên, chúng ta có thể gõ từng kiểu dữ liệu một như trên.
Tuy nhiên, kiểu dữ liệu như trên khiến khả năng đọc hiểu trở nên kém. Có lẽ nguyên nhân là do toán tử ba ngôi (ternary operator) lồng nhau và cấu trúc đệ quy.
Nhưng thật đáng kinh ngạc, TypeScript hỗ trợ kiểu dữ liệu cấp cao (higher-order type).
Và dựa trên kiểu dữ liệu cấp cao đó, có một thư viện kiểu dữ liệu cấp cao.
Chúng ta có thể sử dụng thư viện này để sắp xếp lại định nghĩa kiểu dữ liệu một cách gọn gàng.
type FirstLetterUppercase2= Pipe< T, [ Strings.Split<" ">, Tuples.Map<Strings.Capitalize>, Tuples.Join<" "> ] >; type A = FirstLetterUppercase2<"hello world">; // ^? type = "Hello World"
Đoạn mã mãở đây.
Như vậy, thông qua các kiểu dữ liệu cấp cao, chúng ta có thể sắp xếp kiểu dữ liệu một cách dễ đọc hơn.
Ngoài ra, còn có nhiều tính năng khác, vì vậy hãy truy cập vào trang web để xem xét và sử dụng khi cần thiết.