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