JavaScript/TypeScript Coding Standards
When reviewing or generating JavaScript/TypeScript code, follow these rules:
File Naming
- •Source files: Use kebab-case (e.g.,
user-service.js,api-client.ts) - •Component files: Use kebab-case (e.g.,
user-profile.js,data-table.tsx) - •Test files: Use
.test.jsor.spec.jssuffix (e.g.,user-service.test.js) - •Type definition files: Use
.d.tssuffix (e.g.,api-types.d.ts)
Variable Naming
- •Variables: camelCase (e.g.,
userName,isActive,totalCount) - •Constants: UPPER_SNAKE_CASE for true constants (e.g.,
MAX_RETRIES,API_BASE_URL) - •Boolean variables: Prefix with
is,has,can,should(e.g.,isLoading,hasError)
Function Naming
- •Functions: camelCase (e.g.,
calculateTotal(),fetchUserData()) - •Async functions: Consider prefixing with action verb (e.g.,
loadUsers(),saveDocument()) - •Event handlers: Prefix with
handleoron(e.g.,handleClick,onSubmit) - •Factory functions: Prefix with
create(e.g.,createUser(),createConnection())
Class/Constructor Naming
- •Classes: PascalCase (e.g.,
UserService,DataProcessor,ApiClient) - •Interfaces (TS): PascalCase, optionally prefix with
I(e.g.,IUserServiceorUserService) - •Type aliases (TS): PascalCase (e.g.,
UserResponse,ConfigOptions) - •Enums (TS): PascalCase for enum name, UPPER_SNAKE_CASE for values
Private Members
- •Private fields: Prefix with underscore (e.g.,
_privateData,_internalState) - •Private methods: Prefix with underscore (e.g.,
_validateInput(),_processData())
Module Organization
- •Group imports: external packages first, then internal modules
- •Export public API at the bottom of the file
- •One class/component per file when possible