Step 3 / Select topic TypeScript Types Hard
What this bank covers
- Distributive conditional type over a union
- Blocking distribution with tuple wrapping
- Distributing over never
- Conditional types applied to any
- infer with a variadic tuple pattern
- Multiple infer candidates in covariant positions
- Returning a deferred conditional type
- A reliable never check
- Inferring a parameter list tuple
- Assignability between distributive and non-distributive results
- Multiple inference candidates in covariant positions
- UnionToIntersection with disjoint literals
- Constrained infer that fails its constraint
- Template literal inference is non-greedy at the front
- Inferring return types and the never fallback
- Inferring from an overloaded function type
- Multiple covariant infer candidates
- infer with a failing constraint
- Contravariant infer candidates intersect
- Filtering keys with `as ... never`
- Homomorphic vs non-homomorphic mapping
- Template literal key remapping
- Stripping `readonly` with `-readonly`
- Homomorphic mapped types distribute over unions
- Omit-style key removal
- Optionality survives a homomorphic copy
- Stripping readonly with a mapped type modifier
- Non-homomorphic mapped types drop modifiers
- Template literal inference is left-to-right and non-greedy
- Intrinsic string types inside template literal types
- Constrained inference in template literal patterns
- Recursive template literal splitting
- Template literal key remapping in mapped types
- Distribution over a template literal pattern test
- Template literal types distribute, so `never` absorbs
- Assigning string literals to a template literal type
- Recursive trimming with template literal patterns
- Recursive template literal inference with Capitalize
- Tuple wrapping disables distribution
- boolean distributes as false | true
- Distribution powers Exclude
- Distribution needs a naked type parameter
- infer inside a distributed conditional
- Comparing a member against the saved union
- Distribution correlates the two tuple slots
- Only type parameters distribute
- Blocked distribution can collapse to never
- Distributing keyof over a union
- readonly arrays are a one-way street
- readonly property modifiers and assignability
- keyof reverses the subtype direction
- return-type void swallows any return type
- parameter counts in function assignability
- method bivariance makes Box covariant
- top and bottom types in the assignability lattice
- freshness adds excess property checking on top of assignability
- structural subtyping is directional
- index signatures are not interchangeable with declared properties
- Overload resolution order
- Overloads do not distribute over unions
- Arity and optional parameters in overload picking
- satisfies still runs full assignability checks
- satisfies supplies a contextual type
- satisfies keeps the inferred type
- Assigning to an overloaded call-signature type
- satisfies does not preserve literals by itself
- satisfies checks return types
- The implementation signature is not callable
- keyof over a discriminated union
- Extract with a union of discriminant values
- Assigning object literals to a discriminated union
- Non-distributive conditional over a union
- Filtering union members by the presence of a property
- Exhaustiveness checking with never
- Boolean literal types as discriminants
- A non-literal discriminant blocks narrowing
- Union to member assignability
- Narrowing a union with the in operator
- Multiple infer candidates in contravariant positions
- The `-?` modifier removes `undefined`, not `null`
- Indexed access through an array constraint
- Constraint checking on call arguments
- keyof constraint with indexed access return
- Multiple inference candidates under a primitive constraint
- Constraints referring to another type parameter
- Structural constraint satisfied by string and tuple
- Constraints and literal widening
- One type parameter, two inference sites
- Which type arguments satisfy a constraint
- Generic defaults versus constraints
- Recursive element-type flattening
- Recursive tuple-to-template-literal join
- Counting with a recursive accumulator tuple
- Self-referencing type aliases
- A recursive JSON union type
- Key remapping plus indexed access
- Recursive dotted path union as a constraint
- Recursive tuple reversal with indexed access
- Recursive deep lookup by string path
- Inferring the last tuple element