[Renewal] TypeScript All-in-One: Phần 1. Ngữ pháp cơ bản
Chúng ta sẽ học cú pháp cơ bản của TypeScript, tìm hiểu cách phân tích các kiểu dữ liệu do người khác viết và cách tự mình viết các kiểu dữ liệu.

Thay đổi chức năng liên kết phát hành TypeScript 5.1
liên kết < T >( this : T , thisArg: ThisParameterType< T >): OmitThisParameter< T > ;
liên kết < T , A mở rộng bất kỳ [] , B mở rộng bất kỳ [] , R >( this : ( this : T , ...args: [... A , ... B ]) => R , thisArg: T , ...args: A ): (...args: B ) => R ;
Chức năng liên kết đã được đơn giản hóa. [...A, ...B] có thể gây nhầm lẫn. Bạn có thể coi A là các đối số được liên kết với hàm hiện có và B là các đối số không bị ràng buộc. Nói cách khác, nếu hàm ban đầu có cả tham số A và B thì hàm mới được liên kết chỉ cần B.
const sum = (a1, a2, b1, b2) => a1 + a2 + b1 + b2;
const sum1 = sum.bind(null, 1, 2); // a1에 1, a2에 2를 bind
sum1(3, 4); // 1 + 2 + 3 + 4 === 3, a1, a2는 이미 bind되었으므로 남은 b1, b2만 제공
Trước đây nó như sau:
bind < T , A0 , A mở rộng bất kỳ [] , R >( this : ( this : T , arg0: A0 , ...args: A ) => R , thisArg: T , arg0: A0 ): (... lập luận: A ) => R ;
liên kết < T , A0 , A1 , A mở rộng bất kỳ [] , R >( this : ( this : T , arg0: A0 , arg1: A1 , ...args: A ) => R , thisArg: T , arg0: A0 , arg1: A1 ): (...args: A ) => R ;
liên kết < T , A0 , A1 , A2 , A mở rộng bất kỳ [] , R >( this : ( this : T , arg0 : A0 , arg1: A1 , arg2: A2 , ...args: A ) => R , thisArg : T , arg0: A0 , arg1: A1 , arg2: A2 ): (...args: A ) => R ;
liên kết < T , A0 , A1 , A2 , A3 , A mở rộng bất kỳ [] , R >( this : ( this : T , arg0: A0 , arg1: A1 , arg2: A2 , arg3: A3 , ...args: A ) => R , thisArg: T , arg0: A0 , arg1: A1 , arg2: A2 , arg3: A3 ): (...args: A ) => R ;
liên kết < T , AX , R >( this : ( this : T , ...args: AX []) => R , thisArg: T , ...args: AX []): (...args: AX []) => R ;




