# Narrow Type

> A technique for replacing a broad type with one that admits only the values the domain allows.

Record: `lexicon:narrow-type`
Kind: technique
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Canonical: https://banes-lab.com/ontology/lexicon#lexicon-narrow-type

Listed in [Lexicon terms](https://banes-lab.com/api/records/lexicon.md), after [Introduce Discriminated Union](https://banes-lab.com/records/lexicon/introduce-discriminated-union.md) and before [Define Absence Semantics](https://banes-lab.com/records/lexicon/define-absence-semantics.md).

## Category

- [Schema / Canonical Data / Semantics](https://banes-lab.com/records/lexicon-category/schema-canonical-data-semantics.md)

## Refactors

- [Primitive Obsession](https://banes-lab.com/records/architecture/primitive-obsession.md)
- [Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.md)
- [Type Safety](https://banes-lab.com/records/architecture/type-safety.md)

## Linked from

- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/principles/architecture-category-plugin-extensibility-ioc.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
