Establishing Consistency in Object Property Definitions

Create standards for defining and accessing object properties to enhance clarity and reduce bugs in your JavaScript code.

0 likes
46 views

Rule Content

---
title: Establishing Consistency in Object Property Definitions
description: Create standards for defining and accessing object properties to enhance clarity and reduce bugs in your JavaScript code.
category: JavaScript Cursor Rules
---

# Rule: Consistent Object Property Definitions

## Objective

Ensure uniformity in defining and accessing object properties to improve code readability, maintainability, and reduce potential errors in JavaScript projects.

## Guidelines

1. **Use Consistent Naming Conventions:**
   - Employ `camelCase` for property names (e.g., `userName`, `orderTotal`).
   - Avoid using reserved words or special characters in property names.

2. **Define Object Properties Explicitly:**
   - Initialize all object properties at the time of object creation to prevent `undefined` values.
   - Use default values where applicable to ensure properties have meaningful initial states.

3. **Access Object Properties Safely:**
   - Utilize optional chaining (`?.`) when accessing nested properties to prevent runtime errors.
   - Use nullish coalescing (`??`) to provide default values when properties are `null` or `undefined`.

4. **Avoid Using `Object` as a Property Type:**
   - Specify more precise types for object properties to enhance type safety and code clarity.

5. **Prevent Property Modification:**
   - Use `Object.freeze()` to create immutable objects when properties should not be modified after creation.

## Examples

**Consistent Naming Conventions:**

// Good
const user = {
  firstName: 'John',
  lastName: 'Doe',
  age: 30
};

// Bad
const user = {
  First_Name: 'John',
  last_name: 'Doe',
  Age: 30
};
**Explicit Property Definitions:**

// Good
const order = {
  id: 123,
  total: 0.0,
  items: []
};

// Bad
const order = {
  id: 123
};
**Safe Property Access:**

// Good
const userCity = user.address?.city ?? 'Unknown';

// Bad
const userCity = user.address.city;
**Avoid Using `Object` as a Property Type:**

// Good
/**
 * @typedef {Object} User
 * @property {string} firstName
 * @property {string} lastName
 * @property {number} age
 */

/** @type {User} */
const user = {
  firstName: 'John',
  lastName: 'Doe',
  age: 30
};

// Bad
/** @type {Object} */
const user = {
  firstName: 'John',
  lastName: 'Doe',
  age: 30
};
**Prevent Property Modification:**

// Good
const config = Object.freeze({
  apiUrl: 'https://api.example.com',
  timeout: 5000
});

// Bad
const config = {
  apiUrl: 'https://api.example.com',
  timeout: 5000
};
## References

- ECMAScript® 2025 Language Specification: [Object.defineProperty](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.defineproperty)
- ECMAScript® 2025 Language Specification: [Object.freeze](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.freeze)