0

Does TypeScript has variable names escaping feature like backticks in Scala for literal identifiers:

`0029-otherwise-illegal-scala-literal`

See Scala explanation in Need clarification on Scala literal identifiers (backticks)

Community
  • 1
  • 1
Artem Oboturov
  • 4,344
  • 2
  • 30
  • 48

1 Answers1

3

You can find the spec at https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#8.2

Section 2.2.2 tells you

The PropertyName production from the ECMAScript grammar is reproduced below:

  PropertyName:    LiteralPropertyName    ComputedPropertyName

  LiteralPropertyName:    IdentifierName    StringLiteral    NumericLiteral

  ComputedPropertyName:    [ AssignmentExpression ]

A property name can be any identifier (including a reserved word), a string literal, a numeric literal, or a computed property name. String literals may be used to give properties names that are not valid identifiers, such as names containing blanks. Numeric literal property names are equivalent to string literal property names with the string representation of the numeric literal, as defined in the ECMAScript specification.

This includes string literals.

You can declare a property as a string literal:

class MyClass {
  "return" = 1;
}

you can access it with square brackets

let myinstance = new MyClass()
let one = myinstance["return"]
Martijn
  • 11,964
  • 12
  • 50
  • 96