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)
| File | Purpose | Key additions |
|---|
tsconfig.json | Shared base for all compilation | All strict flags, target, module, Angular compiler options |
tsconfig.app.json | Compiles src/**/*.ts (excludes specs) | outDir: ./out-tsc/app, no extra types |
tsconfig.spec.json | Compiles src/**/*.spec.ts and declarations | outDir: ./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
| Option | Value | Purpose |
|---|
strict | true | Enables all strict type checks (strictNullChecks, strictFunctionTypes, etc.) |
noImplicitOverride | true | Derived classes must use the override keyword when shadowing base members |
noPropertyAccessFromIndexSignature | true | Index-signature properties must use bracket notation (obj['key']), not dot notation |
noImplicitReturns | true | All code paths in a function must explicitly return a value |
noFallthroughCasesInSwitch | true | Prevents accidental fall-through between non-empty switch cases |
skipLibCheck | true | Skips type-checking of .d.ts declaration files for faster builds |
isolatedModules | true | Each file must be independently transformable — required for esbuild/SWC compatibility |
experimentalDecorators | true | Enables TypeScript decorators, which Angular’s @Component, @Injectable, etc. rely on |
target | ES2022 | Emitted JavaScript targets ES2022 (supports native class fields, at(), top-level await) |
module | preserve | Preserves 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
| Option | Value | Purpose |
|---|
importHelpers | true | Imports TypeScript helpers from tslib instead of inlining them, reducing bundle size |
compileOnSave | false | Prevents 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.
| Option | Value | Purpose |
|---|
strictInjectionParameters | true | Type-checks that all constructor parameters in injectable classes can be resolved by the DI system |
strictInputAccessModifiers | true | Enforces that template bindings respect readonly, protected, and private modifiers on @Input() properties |
strictTemplates | true | Enables full template type checking — binding types, event types, and directive inputs are all verified |
enableI18nLegacyMessageIdFormat | false | Disables 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.