Chúng ta có thể sử dụng enum trong JavaScript không?

Điều đó không sao vì một số có thể có nghĩa là bất kỳ thứ gì chúng ta muốn, bắt đầu từ loại ô tô [ví dụ: 1 dành cho xe tải] hoặc thậm chí trạng thái của một phép tính [ví dụ: 1 là bắt đầu]

Chúng ta có thể nghĩ rằng chỉ cần có một biến là đủ để hiểu nó. Hãy xem nhanh đoạn mã dưới đây

Ồ. Chúng ta có thể tìm ra loại xe. Nhưng nếu chúng ta cần thêm nhiều loại xe thì sao?

Chúng ta có thể làm điều này vô tận, và nó sẽ vẫn hoạt động. Tuy nhiên, các loại này sẽ không được kết nối hợp lý. Chúng sẽ chỉ là các hằng số riêng biệt có thể di chuyển đến bất kỳ đâu trong mã của bạn. Xử lý các biến theo cách này hơi lộn xộn

Enum là gì?

Với nền tảng đó, hãy để tôi giới thiệu Enums [kiểu liệt kê]. Với Enums, nhà phát triển có thể xác định một tập hợp các hằng số được đặt tên. Điều này giúp dễ dàng ghi lại hoặc tạo một tập hợp các trường hợp riêng biệt

Sử dụng Enums cũng có thể giảm thiểu lỗi chính tả, vì Enums không thể thay đổi. Và nó có thể làm cho mã của bạn an toàn và sạch sẽ hơn [nghĩa là có thể tìm kiếm theo tên, với khả năng loại bỏ các giá trị ma thuật, v.v.]. Hãy nghĩ về Enums như một loại lớp đóng, các thể hiện được xác định trước một cách tĩnh

Tuy nhiên, có một vấn đề nhỏ - Enums không được hỗ trợ trong JavaScript nguyên bản. Tuy nhiên, vì Enum là một mẫu nên nó có thể được sao chép thông qua một số kỹ thuật và tính năng của JavaScript gốc

Chúng ta hãy xem xét hai tùy chọn áp dụng điều tra viên trong JavaScript

liệt kê JavaScript. một đại diện cơ bản

Bước 1. Xác định một đối tượng đơn giản bằng chữ [POJO]

Như chúng tôi đã đề cập trước đây, Enums là các hằng số tên hay nói cách khác là các cặp khóa-giá trị, vì vậy chúng tôi có thể chỉ cần tạo một đối tượng

Quy ước đặt tên ở đây là một vấn đề của hương vị. Loại phổ biến nhất là PascalCase cho tên và UPPER_CASE cho khóa. Nhưng một lần nữa, tùy bạn quyết định bạn muốn nó trông như thế nào

Lưu ý rằng điều này vẫn không sao chép Enums thực, vì các giá trị có thể thay đổi dễ dàng

Bước 2. Đảm bảo rằng các giá trị không đổi

Trong JS gốc, có thể giữ nguyên các thuộc tính của đối tượng. Tùy chọn đầu tiên là sử dụng phương thứcdefineProperty, nhưng trong ES6, chúng tôi đã có phương thức đóng băng để làm như vậy

Đó là nó cho các tình huống cơ bản. Đối với các kịch bản phức tạp hơn, trong đó các giá trị phải là đối tượng hoặc logic khác nên được đưa vào, chúng ta có thể phát triển triển khai Enum của riêng mình

điều tra viên JavaScript. đại diện nâng cao

Như chúng ta đã biết, Enum là một lớp với các thể hiện được xác định trước. Vì vậy, hãy xem xét kỹ việc triển khai của chúng tôi. Chúng tôi sẽ sử dụng ES6, vì các phiên bản cũ hơn không thực sự phù hợp ở đây

Trong trường hợp này, theo nghĩa đen, chúng tôi xác định trước các thể hiện của lớp có thể được sử dụng trong logic nghiệp vụ của chúng tôi và thêm phương thức toString làm ví dụ về logic tùy chỉnh cho phép liệt kê của chúng tôi

Chúng ta có thể làm cho ví dụ này có thể lặp lại, thêm các phương thức hữu ích hơn và sử dụng lớp Proxy để hạn chế thay đổi trực tiếp các thuộc tính, nhưng tôi sẽ để phần đó cho bạn tự nghiên cứu vì nó nằm ngoài phạm vi của bài viết này

Sự lựa chọn khác

Bạn cũng có thể sử dụng các gói NPM như enumify, giúp triển khai chính mẫu enum hoặc gói enum cung cấp triển khai hoàn chỉnh với nhiều tính năng hơn, chẳng hạn như không gian tên

Cuối cùng, nếu bạn sử dụng TypeScript trong dự án của mình, Enums có sẵn ngay lập tức

Tóm tắt và liên kết hữu ích

Phần trên giải thích cách chúng tôi đi sâu vào Enums và thậm chí tạo bảng liệt kê tùy chỉnh của riêng mình bằng JavaScript đơn giản

Chỉ cần thông báo trước. bạn nên suy nghĩ cẩn thận trước khi sử dụng Enums vì chúng không hữu ích đồng đều trong mọi trường hợp. Tuy nhiên, chúng có thể có lợi trong phần lớn các tình huống

Dưới đây là một số liên kết hữu ích mà bạn có thể thấy thú vị

  • Đối tượng MDN. Đông cứng[]
  • Tutorialspoint Enums
  • Enums trong TypeScript Handbook
  • gói liệt kê
  • liệt kê gói

Cảm ơn vì đã đọc. Tôi hy vọng bạn thích hướng dẫn ngắn gọn này và học được điều gì đó mới về phép liệt kê trong JavaScript

Xây dựng các ứng dụng có thể kết hợp với các thành phần tách rời

Đừng xây dựng web nguyên khối. Sử dụng Bit để tạo và soạn các thành phần phần mềm tách rời — trong các khung yêu thích của bạn như React hoặc Node. Xây dựng các ứng dụng mô-đun và có thể mở rộng với trải nghiệm nhà phát triển mạnh mẽ và thú vị

Đưa nhóm của bạn đến Bit Cloud để lưu trữ và cộng tác trên các thành phần cùng nhau, đồng thời tăng tốc, mở rộng quy mô và chuẩn hóa đáng kể quá trình phát triển theo nhóm. Bắt đầu với các giao diện người dùng có thể kết hợp như Hệ thống thiết kế hoặc Giao diện vi mô hoặc khám phá phần phụ trợ có thể kết hợp. Hãy thử nó →

Enums trong JavaScript có thể mang lại nhiều lợi ích. Chúng giúp giảm thiểu lỗi chính tả trong trường hợp chuỗi đồng thời cung cấp tên tiếng Anh cho một số giá trị có thể là số. Các giá trị cũng được coi là hằng số và sẽ không bị thay đổi trong thời gian chạy — tất cả điều này, cũng như làm cho mã dễ dàng cấu trúc lại hơn với một nguồn sự thật duy nhất cho các giá trị. Điều gì không thích?

Hãy cùng xem một số ví dụ và cách triển khai enums

Xác định Enums của chúng tôi

Mặc dù JavaScript không có kiểu riêng cho enum, nhưng chúng ta luôn có thể tạo kiểu riêng của mình bằng cách sử dụng một đối tượng. Có một số quy ước thường được sử dụng khi xác định enum — mặc dù bạn không nhất thiết phải tuân theo chúng

  • Tên enum là Capital Case
  • Tránh viết tắt trừ khi chúng được sử dụng phổ biến
  • Các thuộc tính là HOA
  • Các thuộc tính được phân cách bằng dấu gạch dưới

Với suy nghĩ trên, chúng ta hãy xem những điều sau đây

Chúng tôi có một enum ở đây cho một số giá trị thời gian mà chúng tôi có thể sử dụng thường xuyên trong cơ sở mã của mình. Thay vì có các số thô trôi nổi xung quanh mà chúng ta có thể vô tình thêm 0 vào, chúng ta có một hằng số được xác định trong enum không bao giờ được thay đổi

Lợi ích của việc sử dụng enum ở đây sẽ là

  • Tự động hoàn thành trong IDE/trình soạn thảo
  • Nguồn duy nhất của sự thật
  • Tính nhất quán
  • Đánh dấu lỗi — Chúng tôi có thể bỏ lỡ số 0 trên giá trị, nhưng chúng tôi sẽ không bỏ lỡ một tên hằng sai chính tả
  • Có thể tìm kiếm theo tên

NB. Một lợi ích thường bị bỏ qua là việc đặt tên cụ thể cho giá trị trong enum sẽ cho phép chúng tôi tìm kiếm tất cả các cách sử dụng giá trị đó trong mã. Số 7 có thể xuất hiện hàng nghìn lần, nhưng DAYS_PER_WEEK sẽ xảy ra ít hơn đáng kể

Những con số ma thuật được đánh giá quá cao

Gặp phải những con số kỳ diệu trong mã không bao giờ là niềm vui. Điều này dường như tùy ý 2 nghĩa là gì?

Nếu đây là một enum, thì giá trị có thể đã được đặt một cái tên tiết lộ ý định

Sau khi đặt tên riêng cho giá trị này trong một enum, chúng ta có thể thấy ngay giá trị này đang được sử dụng để làm gì. Đặt tên một cái gì đó chính xác trong mã là quan trọng. Nó làm cho mọi thứ dễ đọc, suy luận và dễ hiểu hơn

Như đã nói, việc có các số thô trong mã của chúng tôi không phải lúc nào cũng không thể giải mã được. Một số số phổ biến đến mức chúng tôi không thực sự cần làm nổi bật mục đích của chúng bằng tên, miễn là mã có thể tự giải thích được. Hãy xem xét những điều sau đây

const dailyPay = hourlyRate * 8

Ta có thể thấy rõ ràng số 8 tượng trưng cho số giờ làm việc trong một ngày. Giá trị này không nhất thiết đảm bảo được đặt trong một enum

Đảm bảo nó đông lạnh

Một điều cần xem xét khi tạo một enum là đảm bảo rằng đối tượng bị đóng băng. Gọi số nguyên gốc Object.freeze[value] sẽ ngăn sự đột biến của các hằng số mà chúng ta xác định. Chúng tôi không muốn những giá trị này bị thay đổi trong thời gian chạy

Khi chúng ta gọi hàm này, chúng ta cần chuyển vào enum mới của mình và trạng thái hiện tại của nó sẽ bị đóng băng và được trả về. Nguyên mẫu của đối tượng cũng bị đóng băng. Không có thuộc tính nào có thể được sửa đổi, thêm hoặc xóa ngay bây giờ

Choices.ROCK = 'paper' // Returns 'paper'console.log[Choices.ROCK] // Logs 'rock'

Nếu bây giờ chúng ta cố gắng thay đổi đối tượng, giá trị mà chúng ta cố gán sẽ được trả về, nhưng trạng thái của đối tượng sẽ không bị thay đổi. Chúng ta có thể thấy điều này khi cố đăng xuất thuộc tính enum. Thuộc tính ROCK giữ lại giá trị ban đầu của nó là rock, như chúng ta mong đợi

NB. Đóng băng chỉ áp dụng cho các thuộc tính lớp trên cùng. Các đối tượng lồng nhau sẽ vẫn có thể thay đổi

Hãy cẩn thận với các giá trị được sử dụng

Một điều đáng chú ý là đôi khi chúng ta có thể gặp phải một vấn đề tế nhị. Chúng ta nên cảnh giác với việc sử dụng các giá trị giả mạo JavaScript làm giá trị trong enum của mình. Chúng có thể gây ra những cơn đau đầu không cần thiết

Vấn đề ở trên là enum của chúng ta đang sử dụng 0 làm giá trị cho tháng một. Đây là một giá trị giả trong JavaScript, có nghĩa là điều kiện chúng ta có sẽ đánh giá thành true. Tất cả các giá trị giả sẽ dẫn đến ghi nhật ký ở trên. Điều này cũng xảy ra do sự so sánh lỏng lẻo giữa == với. sự so sánh chặt chẽ của ===, đó là một chủ đề khác của riêng nó

Thay vào đó, hãy cố gắng tránh gán các giá trị giả trong enums

Ảnh của Simon Matzinger trên BaptCuối cùng cũng là một kết luận

Sử dụng khái niệm enums trong JavaScript có nhiều lợi ích với ít nhược điểm. Mặc dù nó có thể không phù hợp với mọi trường hợp sử dụng, nhưng nó chắc chắn đạt được phần lớn trong số họ. Vậy tại sao không tận dụng chúng?

Dưới đây là một số tài liệu tham khảo về các tài nguyên có thể thu hút sự quan tâm của bạn, nếu bạn muốn tìm hiểu thêm hoặc bắt đầu triển khai enum vào cơ sở mã của riêng mình, nếu bạn chưa làm như vậy

Đối tượng MDN. Đông cứng[]
Tutorialspoint Enums
Giá trị sai của JavaScript

Cảm ơn bạn đã đọc. Tôi hy vọng bạn thích bài viết và học được điều gì đó. Nếu bạn tình cờ có bất kỳ phản hồi, phê bình hoặc đóng góp nào, vui lòng ghi lại chúng trong phần bình luận bên dưới

Tại sao nên sử dụng enum trong JavaScript?

Enums là một trong số ít các tính năng mà TypeScript có mà không phải là phần mở rộng cấp độ loại của JavaScript. Enums cho phép nhà phát triển xác định một tập hợp các hằng số được đặt tên . Sử dụng enums có thể giúp ghi lại ý định dễ dàng hơn hoặc tạo một tập hợp các trường hợp riêng biệt.

enum trong ví dụ JavaScript là gì?

Enum là một kiểu dữ liệu trong các ngôn ngữ lập trình xác định một tập hợp các giá trị không đổi. Nó là một loại giá trị riêng biệt [i. e] tất cả các giá trị trong một enum là duy nhất. Sử dụng một enum làm cho mã có thể đọc được và có thể bảo trì được. Một số ví dụ về enum là tất cả các ngày trong tuần từ Thứ Hai đến Chủ Nhật, các cỡ áo phông như S, M, L, XL, v.v.

Làm cách nào để đọc giá trị enum trong JavaScript?

Bảng liệt kê JavaScript .
Nhận tất cả các giá trị enum được phép. Mục tiêu. keys[Direction] trả về một mảng ['Up', 'Down', 'Left', 'Right']
Kiểm tra xem một giá trị có bằng giá trị enum không. val === Hướng. Lên
Kiểm tra xem một giá trị có trong enum không. Phương hướng. hasOwnProperty['Lên']

Từ khóa enum trong JavaScript là gì?

Từ khóa enum khai báo loại liệt kê [không thể thay đổi] . Một enum là một "lớp" đặc biệt đại diện cho một nhóm các hằng số [các biến không thể thay đổi, như các biến cuối cùng].

Chủ Đề