The three pointing devices ยง72 distinguishes โ the DOM's pointerType
vocabulary, exactly (2026-08-09, A-9).
A closed union rather than string, because a handler that switches on it
should be exhaustive and a typo should be a compile error. The platform's own
field is not closed โ the Pointer Events specification permits
vendor-defined values and the empty string for "unknown" โ so the widening
lives at the platform seam (SurfacePointerEvent.pointerType, typed string
for assignability) and a value outside this union arrives here as
absence, never as a guess. See pointer-input.ts for that measurement.
The three pointing devices ยง72 distinguishes โ the DOM's
pointerTypevocabulary, exactly (2026-08-09, A-9).A closed union rather than
string, because a handler that switches on it should be exhaustive and a typo should be a compile error. The platform's own field is not closed โ the Pointer Events specification permits vendor-defined values and the empty string for "unknown" โ so the widening lives at the platform seam (SurfacePointerEvent.pointerType, typedstringfor assignability) and a value outside this union arrives here as absence, never as a guess. Seepointer-input.tsfor that measurement.