TypeScript-Handbook icon indicating copy to clipboard operation
TypeScript-Handbook copied to clipboard

typeof operator isn't documented

Open estaub opened this issue 5 years ago • 6 comments

The typeof operator, as used in type queries rather than Javascript, isn't documented, other than as used in documentation of other things, like type guards. Because it is overloaded from the Javascript operator, there can be lots of novice puzzlement.

If your reaction is "that can't possibly be", please look for yourself!

I'd provide a PR, but the wording should be much more precise and consistent than I'm able to do. A starting point might be https://mariusschulz.com/blog/type-queries-and-typeof-in-typescript#typescripts-type-queries

estaub avatar Mar 06 '20 13:03 estaub

I came here because I couldn't find documentation for the switch statement in the handbook. It seems like there is a missing page for "expressions" that could cover typeof, switch and others.

dwarburt avatar Mar 10 '20 13:03 dwarburt

@dwarburt AFAIK switch in Typescript is unmodified from Javascript. Is there something Typescript-specific you were looking for? The handbook doesn't cover most of vanilla Javascript, for obvious reasons. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch.

estaub avatar Mar 10 '20 14:03 estaub

I was trying to find out if it's possible to switch on the type of a variable. It's not obvious to me that the handbook shouldn't cover all the parts of the language. It certainly covers a lot of vanilla JavaScript already.

At least it would be nice if it said somewhere that this particular language construct is unmodified.

dwarburt avatar Mar 10 '20 16:03 dwarburt

The typeof operator, as used in type queries rather than Javascript, isn't documented

Like @estaub mentioned of switch, typeof is also a native JS operator: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

jpelton-stroud avatar May 03 '20 15:05 jpelton-stroud

@jpelton-stroud Sorry, but I'm not sure what your point was. If you were saying that the MDN doc covers use of typeof in TS as a type query operator, you'd be wrong; static typing is a foreign concept to JS that can't even begin to be discussed in JS terms. I suppose I should provide an example, to be crystal clear:

    const JoeSchmoe = { name: 'Schmoe, Joe', district: '42' }
    type legislator = typeof JoeSchmoe  // == { name: string; district: string }

estaub avatar May 03 '20 21:05 estaub

ah, apparently I fell prey to that "novice puzzlement" you mentioned :P Thank you for the clarification!

jpelton-stroud avatar May 03 '20 21:05 jpelton-stroud