fix(structures): widen via String() in narrowing test to satisfy lint
CI / commits (pull_request) Successful in 2m44s
CI / scan (pull_request) Successful in 2m53s
CI / a11y (pull_request) Successful in 3m42s
CI / perf (pull_request) Successful in 8m39s
CI / check (pull_request) Failing after 12m35s

The narrowing test for `isStructureKind` had `const candidate: string =
'medico_social'`, which ESLint's `@typescript-eslint/no-inferrable-types`
correctly flags as trivially-inferred.

The naive fix - dropping the annotation - would let TypeScript infer
the literal type `'medico_social'`, which is already a StructureKind
subtype. The narrowing check would then be vacuous (TypeScript already
knows the value is a kind, the runtime guard has nothing to prove).

Fix: round-trip through `String()` to widen the literal to `string`.
TypeScript infers `string` for `String(...)` return; no annotation
needed; the narrowing test stays meaningful.

CI lint target on portal-bff now passes 0 errors. The 13 remaining
warnings (non-null assertions in principal-extractor.spec, unused
underscored params in rate-limit.middleware, etc.) are pre-existing
and not in scope for this fix.
This commit is contained in:
Julien Gautier
2026-05-26 13:34:03 +02:00
parent 8d43717d25
commit 377a484afc
@@ -35,7 +35,10 @@ describe('isStructureKind', () => {
}); });
it('narrows the type at the call site', () => { it('narrows the type at the call site', () => {
const candidate: string = 'medico_social'; // Round-trip through `String()` to widen the literal to `string`.
// Without this the inferred type is `'medico_social'`, already a
// StructureKind subtype — the narrowing check would be vacuous.
const candidate = String('medico_social');
if (!isStructureKind(candidate)) { if (!isStructureKind(candidate)) {
throw new Error('unreachable — candidate is a known kind'); throw new Error('unreachable — candidate is a known kind');
} }