JavaScript enums là gì?

Đ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ó →

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ứ 2 đến chủ nhật, size áo thun như S, M, L, XL, v.v.

Mã giả của một biến enum có thể trông giống như bên dưới

enum Direction {
    NORTH,
    EAST,
    WEST,
    SOUTH
}

JavaScript có hỗ trợ Enum không?

Mặc dù kiểu dữ liệu enum được sử dụng rộng rãi trong nhiều ngôn ngữ lập trình như C++, Java, v.v. , Javascript không có kiểu dữ liệu enum tích hợp. Các chức năng của Enum có thể được triển khai trong Javascript bằng cách sử dụng các lớp và đối tượng

Các cách triển khai Enum trong Javascript

Enum sử dụng các đối tượng

Enums có thể được triển khai trong Javascript bằng cách sử dụng các đối tượng. Đối tượng có thể có các cặp khóa-giá trị trong đó khóa có thể được coi là giá trị enum và vấn đề có thể là bất kỳ thứ gì

cú pháp

const objectName = {
    key1: value1,
    key2: value2,
    ....
}

Thí dụ

Hãy sử dụng một đối tượng Javascript để triển khai một enum cho các hướng như bắc, đông, tây và nam

const Direction = {
  North: 'north',
  East: 'east',
  West: 'west',
  South: 'south',
}

Một vấn đề với việc triển khai ở trên là các giá trị trong đối tượng Hướng có thể thay đổi. Vì enums là bất biến, chúng ta có thể đạt được tính bất biến bằng cách đóng băng đối tượng bằng Object. phương thức đóng băng ()

đối tượng. Phương thức freeze() đóng băng một đối tượng nghĩa là không thể thêm các thuộc tính mới, các thuộc tính hiện có và nguyên mẫu của đối tượng không thể được gán lại

// Frozen enum - Immutable
const Direction = Object.freeze({
  North: 'north',
  East: 'east',
  West: 'west',
  South: 'south',
})

Các giá trị có thể được truy cập dòng dưới đây

var input = Direction.North

if (input == Direction.North) {
  console.log('Move Up')
}

Enum sử dụng các ký hiệu

Một vấn đề chúng ta thấy với cách tiếp cận trên là va chạm (i. e. ) giá trị của một đối tượng có thể xung đột với giá trị của đối tượng khác. Hãy hiểu nó với Hướng và Cực của enums

const Direction = Object.freeze({
  North: 'north',
  East: 'east',
  West: 'west',
  South: 'south',
})

const Pole = Object.freeze({
  North: 'north',
  South: 'south',
})

console.log(Direction.North === Pole.North)

Đầu ra của đoạn mã trên sẽ là

Mặc dù hướng Bắc và cực Bắc là các trường hợp enum khác nhau, nhưng chúng được đối xử bình đẳng. Biểu tượng có thể được sử dụng để khắc phục vấn đề này

Biểu tượng là một đối tượng tích hợp có hàm tạo trả về một giá trị được đảm bảo là duy nhất. Hãy sử dụng các ký hiệu để thực hiện Hướng và Cực enum

const Direction = Object.freeze({
  North: Symbol('north'),
  East: Symbol('east'),
  West: Symbol('west'),
  South: Symbol('south'),
})

const Pole = Object.freeze({
  North: Symbol('north'),
  South: Symbol('south'),
})

console.log(Direction.North === Pole.North)

Đầu ra của đoạn mã trên là

Đoạn mã trên trả về false vì các giá trị của đối tượng Hướng và đối tượng Cực khác nhau vì Biểu tượng trả về các giá trị duy nhất


Enum sử dụng các lớp

Enums có thể được triển khai bằng cách sử dụng các lớp Javascript, trong đó mỗi giá trị sẽ là thể hiện tĩnh của chính lớp đó nhưng với các giá trị khác nhau

Enum trong JavaScript w3schools là gì?

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) . Để tạo một enum, hãy sử dụng từ khóa enum (thay vì lớp hoặc giao diện) và phân tách các hằng số bằng dấu phẩy. Lưu ý rằng chúng phải được viết hoa.

Sử dụng enums để làm gì?

Một phép liệt kê, hay Enum , là một tên tượng trưng cho một tập hợp các giá trị. Kiểu liệt kê được coi là kiểu dữ liệu và bạn có thể sử dụng chúng để tạo các tập hợp hằng số để sử dụng với các biến và thuộc tính .

Có enum trong JavaScript không?

Hãy nghĩ về Enums như một loại lớp đóng, các thể hiện của nó được xác định trước một cách tĩnh. Tuy nhiên, có một vấn đề nhỏ — Các enum 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.

Hai loại enum là gì?

Có ba loại enum. .
số đếm
chuỗi enum
enum không đồng nhất