Skip to content

required param

awekrx edited this page May 29, 2026 · 1 revision

required-param

Import

import { requiredParam } from '@dev-suite/decorators/required-param'

Category

  • parameter

Use Case

Enforce that argument is present.

Replaces

  • if (!arg) throw blocks
  • Ad-hoc required checks across endpoints

Example 1

Without decorator

class UserController {
  get(id?: string) {
    if (!id) throw new Error('id is required');
    return this.repo.get(id);
  }
}

With decorator

import { requiredParam } from '@dev-suite/decorators/required-param';

class UserController {
  get(@requiredParam() id: string) {
    return this.repo.get(id);
  }
}

Why better

  • Centralizes cross-cutting behavior.
  • Method/class/property code stays focused on domain logic.

Example 2

Without decorator

class OrderController {
  cancel(orderId?: string) {
    if (!orderId) throw new Error('orderId required');
    return this.orders.cancel(orderId);
  }
}

With decorator

import { requiredParam } from '@dev-suite/decorators/required-param';

class OrderController {
  cancel(@requiredParam({ message: 'orderId required' }) orderId: string) {
    return this.orders.cancel(orderId);
  }
}

Why better

  • Second scenario reuses same policy without duplication.
  • Behavior is more consistent and easier to audit.

Clone this wiki locally