Nâng CaoTypeScript iconTypeScript

Tại sao TypeScript dùng structural typing thay nominal typing?

Structural typing (duck typing) kiểm tra shape/structure thay tên type. Hai types tương thích nếu có cùng properties. Phù hợp hơn với JavaScript (dynamic, object literal heavy). TypeScript kết hợp: structural làm mặc định + branded types cho nominal khi cần.

Gotcha thú vị: hai class khác tên nhưng cùng shape hoàn toàn có thể assign cho nhau — bất ngờ với devs từ Java/C#.

typescript
class Dog { name: string; breed: string; constructor(n: string, b: string) { this.name = n; this.breed = b; } }
class Cat { name: string; breed: string; constructor(n: string, b: string) { this.name = n; this.breed = b; } }

const dog: Dog = new Cat('Luna', 'Siamese'); // OK — same shape!

Xem toàn bộ TypeScript cùng filter theo level & chủ đề con.

Mở danh sách TypeScript