VoiceGem

How to say a fat arrow when dictating an arrow function

Say “fat arrow” or “arrow” to produce =>, spaced on both sides, so “open paren x close paren fat arrow x plus one” assembles as (x) => x + one. The bare word “arrow” also produces the fat arrow, which catches out anyone writing PHP, Rust or Swift who meant the thin one.

A thirteen-word arrow function takes roughly 15 seconds to type and roughly 4.8 seconds to say. (sources: Dhakal, Feit, Kristensson & Oulasvirta, “Observations on Typing from 136 Million Keystrokes”, CHI 2018, 168,000 participants, 136 million keystrokes; Yuan, Liberman & Cieri, “Towards an Integrated Understanding of Speaking Rate in Conversation”, Interspeech 2006, 2,438 American English telephone conversations (Switchboard corpus). The speech figure is conversational rate, not a measured dictation rate — no such measurement exists.)

What lands in your editor
const doubleIt =(x) => x * 2

This tool runs entirely in your browser. Nothing you type is sent anywhere, stored, or logged.

Step by step

  1. 1

    Say the parameter list first

    Speak the parentheses and the parameter, then “fat arrow”. The operator keeps its spaces, producing (x) => rather than (x)=>.

  2. 2

    Say the body straight after

    Continue into the expression or say “open brace” for a block body. Nothing needs a pause, because each phrase is an independent lookup in the same VoiceGem pass.

  3. 3

    Say “fat arrow” in full, always

    Avoid the bare word “arrow” unless you are certain you want =>. The single word is an alias for the fat arrow, so a PHP developer saying “arrow” for -> gets the wrong operator.

  4. 4

    Typing it instead

    Press equals then Shift-period. For a single arrow this is faster, and most editors will not autocomplete it for you either way.

The bare word “arrow” is the most common wrong-operator mistake in VoiceGem

Two arrows live in the table and only one of them owns the unqualified word. “Arrow” and “fat arrow” both produce =>, while the thin arrow -> requires “thin arrow” or “dash arrow” in full. A PHP developer dictating an object member access says “arrow” by reflex and gets $user => name.

Alias choices in the Deterministic Pass are frozen and public rather than inferred, which is what makes this trap avoidable. The complete table is published, the behaviour is identical on every run, and one phrase learned once removes the problem permanently — unlike a model-based formatter, where the same reflex might work on Tuesday and not on Thursday.

Where the manual way breaks

An arrow function's operator is two keystrokes and typing it is quicker than saying two words. This page is not arguing for dictating a lone arrow.

Callbacks are the shape worth speaking. A map callback holds a member access, a parameter, an arrow, a property lookup and two brackets, and it is a construct developers write constantly in JavaScript and TypeScript. Dictating the whole callback in VoiceGem places every character in one pass, and the parentheses and arrow always land in the same relationship to each other.

Doing this somewhere else? speech-to-code converter, with nothing to install, the thin arrow specifically, how the single ampersand works, or the same thing for the asterisk.

Common questions

The fat arrow, =>. VoiceGem treats the bare word as an alias for it, so say “thin arrow” or “dash arrow” in full when you want the PHP, Rust or Swift operator.

Yes. The operator attaches on neither side, so the gaps between your spoken words survive and the function reads like formatted JavaScript.

Yes. Say “async”, the parameter list, then “fat arrow”. The keyword is not in the table so it passes through untouched.

Say “arrow” and watch which operator you actually get.

Open the tool