Skip to main content

Types

This directory contains TypeScript type definitions and enums that provide type safety and consistency across the Cloud Blocks library and projects that consume it.

Purpose

The types in this directory serve to:

  • Ensure type safety across all constructs, utilities, and consuming applications
  • Standardise common patterns like resource naming, tagging, and environment configuration
  • Provide consistent interfaces for configuration objects and function parameters
  • Enable IntelliSense support and better developer experience in IDEs
  • Enforce best practices through well-defined type constraints
  • Facilitate code reuse by providing shared type definitions

Available Types

Environment Types (environments.ts)

  • Region - Enum mapping human-readable region names to AWS region codes (e.g., dublineu-west-1)
  • Stage - Enum defining deployment stages (development, staging, production, etc.)
  • Environment-related interfaces and types for consistent deployment patterns

Resource Naming Types (resource-name-types.ts)

  • ResourceNameParts - Interface defining the core components for generating AWS resource names
  • ResourceNameOptions - Configuration options for resource name generation
  • Standardised naming convention types following the pattern: <stage>-<service>-<resource>

Tag Types (tag-types.ts)

  • TagKey - Base type for tag keys (extensible for project-specific constraints)
  • TagValue - Type definition for tag values
  • Tags - Interface for key-value tag collections
  • RequiredTags - Interface defining mandatory tags for compliance

Usage

Import and use these types to ensure consistency across your CDK applications:

import { Region, Stage, ResourceNameParts, Tags } from '@leighton-digital/cloud-blocks';

// Use in your constructs or utilities
const resourceConfig: ResourceNameParts = {
stage: Stage.production,
service: 'api',
resource: 'gateway'
};

const tags: Tags = {
Environment: Stage.production,
Owner: 'platform-team'
};

These types are designed to work seamlessly with the constructs and utilities provided by Cloud Blocks, ensuring a consistent and type-safe development experience.