Skip to content

Commit

Permalink
Normative Conventions: pretend Strings aren't iterable
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelficarra authored Jun 18, 2024
1 parent f72de57 commit 47d8bac
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions normative-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,11 @@ For the purposes of this guideline `-0` is considered to be an integral number (
Some APIs intentionally round non-integral inputs, for example as an attempt to provide a best-effort behavior, rather than because the API fundamentally only makes sense with integers. This guideline does not apply to those cases.

NB: This convention is new as of 2024, and most earlier parts of the language do not follow it.

## Reject primitive Strings in iterable-taking APIs and syntax

Any time an iterable value (a value that has a `Symbol.iterator` method) is expected, primitive Strings should be treated as if they were not iterable. Usually, this will mean throwing a `TypeError`. String Objects, however, should be treated like any other Object.

Although primitive Strings are iterable (`String.prototype` has a `Symbol.iterator` method which enumerates code points), it is now considered a mistake to iterate a String without specifying whether the String is providing an abstraction over code units, code points, grapheme clusters, or something else.

NB: This convention is new as of 2024, and most earlier parts of the language do not follow it.

0 comments on commit 47d8bac

Please sign in to comment.