Hướng Dẫn Chú Thích Hàm Trong TypeScript: Từ Cơ Bản Đến Nâng Cao
TypeScript là một ngôn ngữ lập trình đang ngày càng trở nên phổ biến, đặc biệt trong lĩnh vực phát triển web. Bài viết này sẽ cung cấp cho bạn những kiến thức cần thiết về cách chú thích hàm trong TypeScript, bao gồm từ những kỹ thuật cơ bản đến các khái niệm nâng cao như generic và interface.
1. Cách Chú Thích Hàm Cơ Bản
Cách đơn giản nhất để chú thích một hàm trong TypeScript là:
typescript
function add(a: number, b: number): number {
// logic
}
// Hoặc
const add = (a: number, b: number): number => {
// logic
}
Các tham số tùy chọn có thể được chú thích bằng cách sử dụng dấu hỏi:
typescript
function optional(a: number, b?: number) {
console.log(a);
}
2. Chú Thích Hàm Có Giá Trị Trả Về
Để chú thích hàm trả về giá trị, bạn có thể sử dụng cú pháp như sau:
typescript
function multiplier(factor: number): (value: number) => number {
return value => factor * value;
}
Ví dụ sử dụng hàm multiplier:
typescript
const n = multiplier(6);
n(8); // 48
3. Chú Thích Hàm Generic
Khi sử dụng generic, bạn có thể chú thích hàm như sau:
typescript
function pickFirst<T>(array: Array<T>): T {
return array[0];
}
Trường hợp muốn viết một hàm map tùy chỉnh, bạn có thể làm như sau:
typescript
function myMap<Input, Output>(arr: Input[], fn: (item: Input, index?: number) => Output): Output[] {
return arr.map(fn);
}
4. Ràng Buộc Generic
Bạn cũng có thể ràng buộc các biến generic với các kiểu có thuộc tính cụ thể. Dưới đây là ví dụ:
typescript
function pickInnerFirst<T extends {length: number}>(array: Array<T>): T {
return array[0][0];
}
5. Sử Dụng Interface Trong Hàm
Hàm có thể được mô tả bằng interface, ví dụ:
typescript
interface DescribableFunction {
(value: string): void;
description: string;
}
Điều này cho phép bạn gắn các thuộc tính vào hàm, điều mà bạn có thể áp dụng trong TypeScript như sau:
typescript
function shout(fn: DescribableFunction, value: string) {
fn(value);
console.log(fn.description);
}
Kết Luận
Hiểu rõ cách chú thích hàm trong TypeScript không chỉ giúp bạn xây dựng một hệ thống kiểu thông minh hơn mà còn giúp giảm thiểu các lỗi trong mã nguồn. Những khái niệm được đề cập ở đây là rất hữu ích, đặc biệt nếu bạn đang phát triển một thư viện hoặc framework. Cảm ơn bạn đã theo dõi bài viết này!
source: viblo