Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kevinrodriguezmorales/siget/llms.txt

Use this file to discover all available pages before exploring further.

Siget ships with three TypeScript configuration files that form a shared inheritance hierarchy. A root tsconfig.json defines all compiler and Angular compiler options; tsconfig.app.json and tsconfig.spec.json each extend it and add settings specific to application compilation and test compilation respectively.

File Hierarchy

tsconfig.json          ← shared base (compiler options + Angular compiler options)
├── tsconfig.app.json  ← application compilation (extends tsconfig.json)
└── tsconfig.spec.json ← test compilation (extends tsconfig.json)
FilePurposeKey additions
tsconfig.jsonShared base for all compilationAll strict flags, target, module, Angular compiler options
tsconfig.app.jsonCompiles src/**/*.ts (excludes specs)outDir: ./out-tsc/app, no extra types
tsconfig.spec.jsonCompiles src/**/*.spec.ts and declarationsoutDir: ./out-tsc/spec, adds vitest/globals type

Base Configuration — tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "strict": true,
    "noImplicitOverride": true,
    "noPropertyAccessFromIndexSignature": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "skipLibCheck": true,
    "isolatedModules": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "ES2022",
    "module": "preserve"
  },
  "angularCompilerOptions": {
    "enableI18nLegacyMessageIdFormat": false,
    "strictInjectionParameters": true,
    "strictInputAccessModifiers": true,
    "strictTemplates": true
  },
  "files": [],
  "references": [
    { "path": "./tsconfig.app.json" },
    { "path": "./tsconfig.spec.json" }
  ]
}

Compiler Options

Strict Type-Checking Flags

OptionValuePurpose
stricttrueEnables all strict type checks (strictNullChecks, strictFunctionTypes, etc.)
noImplicitOverridetrueDerived classes must use the override keyword when shadowing base members
noPropertyAccessFromIndexSignaturetrueIndex-signature properties must use bracket notation (obj['key']), not dot notation
noImplicitReturnstrueAll code paths in a function must explicitly return a value
noFallthroughCasesInSwitchtruePrevents accidental fall-through between non-empty switch cases
skipLibChecktrueSkips type-checking of .d.ts declaration files for faster builds
isolatedModulestrueEach file must be independently transformable — required for esbuild/SWC compatibility
experimentalDecoratorstrueEnables TypeScript decorators, which Angular’s @Component, @Injectable, etc. rely on
targetES2022Emitted JavaScript targets ES2022 (supports native class fields, at(), top-level await)
modulepreservePreserves native ESM import/export syntax in emitted output
"module": "preserve" is the modern setting for Angular projects targeting esbuild. It keeps import and export statements intact rather than transpiling them to CommonJS, enabling better tree-shaking and native ESM output.

Other Compiler Options

OptionValuePurpose
importHelperstrueImports TypeScript helpers from tslib instead of inlining them, reducing bundle size
compileOnSavefalsePrevents the IDE from triggering a full compile on every file save

Angular Compiler Options

These options are read by @angular/compiler-cli (the ngc compiler) in addition to the standard TypeScript options.
OptionValuePurpose
strictInjectionParameterstrueType-checks that all constructor parameters in injectable classes can be resolved by the DI system
strictInputAccessModifierstrueEnforces that template bindings respect readonly, protected, and private modifiers on @Input() properties
strictTemplatestrueEnables full template type checking — binding types, event types, and directive inputs are all verified
enableI18nLegacyMessageIdFormatfalseDisables the legacy i18n message ID format; new projects should always use the modern format
strictTemplates: true is one of the highest-value settings in an Angular project. It catches mistakes like passing a string where a number input is expected, directly in your IDE and during ng build, long before the error would surface at runtime.

App Configuration — tsconfig.app.json

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": []
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "src/**/*.spec.ts"
  ]
}
This config includes all TypeScript files under src/ except spec files, and outputs compiled artifacts to out-tsc/app/. The empty types array prevents test-only globals (like Vitest’s describe/it) from leaking into application code.

Spec Configuration — tsconfig.spec.json

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "vitest/globals"
    ]
  },
  "include": [
    "src/**/*.d.ts",
    "src/**/*.spec.ts"
  ]
}
This config is used exclusively when compiling tests. It adds vitest/globals to types, which injects describe, it, expect, beforeEach, and other Vitest globals into the TypeScript type environment without needing explicit imports in every spec file.

Build docs developers (and LLMs) love