Нет точного эквивалента строковых литералов TypeScript (по крайней мере, не в тех терминах, которые определены здесь ).Однако, с небольшим количеством кода, вы можете сделать перечисления, чтобы сделать что-то очень похожее на них (не точное поведение, но это может на самом деле работать для вас).
Рассмотрите следующий пример:
enum Choices {
CHOICE_1("choice 1"),
CHOICE_2("choice 2")
String literal
private Choices(String literal) {
this.literal = literal
}
static Choices of(String literal) {
Choices choices = values().find { it.literal == literal }
if (choices == null) {
throw new IllegalArgumentException("Choices with literal ${literal} is not supported!")
}
return choices
}
}
Choices input = Choices.of("choice 2")
println input.literal // prints "choice 2"
println input // prints "CHOICE_2"
Choices choice = "CHOICE_1" // coerces String to enums name (but not literal!)
println choice.literal // prints "choice 1"
println choice // prints "CHOICE_1"
Choices.of("asdasd") // throws IllegalArgumentException