feat(typescript-types): Add Simplify<T, E, I>

This commit is contained in:
T. R. Bernstein
2025-07-15 11:19:43 +02:00
parent 9700b7d46d
commit 2aa71d91e4
6 changed files with 78 additions and 3 deletions

View File

@@ -0,0 +1,44 @@
import type { Simplify } from '@/simplify.js'
import { expect } from 'tstyche'
type TyreSize = {
radius: number
type: 'winter' | 'summer'
}
type Maker = {
maker: string
}
type TyreMaker = Maker & TyreSize
type SimplifiedTyreMaker = {
radius: number
type: 'winter' | 'summer'
maker: string
}
expect<TyreMaker>().type.not.toBe<SimplifiedTyreMaker>()
expect<Simplify<TyreMaker>>().type.toBe<SimplifiedTyreMaker>()
type Train = {
wheels: TyreMaker[]
}
type SimplifiedTrain = {
wheels: SimplifiedTyreMaker[]
}
expect<Train>().type.not.toBe<SimplifiedTrain>()
expect<Simplify<Train>>().type.toBe<SimplifiedTrain>()
type Car = {
wheels: [TyreMaker, TyreMaker]
}
type SimplifiedCar = {
wheels: [SimplifiedTyreMaker, SimplifiedTyreMaker]
}
expect<Car>().type.not.toBe<SimplifiedCar>()
expect<Simplify<Car>>().type.toBe<SimplifiedCar>()