在Groovy中,Typescript中是否有一些等效于字符串文字类型的>
type Choices = 'choice 1' | 'choice 2'
Choices input
我是不是很幸运?
答案 0 :(得分:1)
没有与TypeScript的字符串文字类型完全等效的功能(至少与定义为here的术语不同)。但是,只需少量代码,您就可以使枚举执行与它们相似的操作(不是确切的行为,但实际上可能对您有用)。
考虑以下示例:
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
答案 1 :(得分:0)
是的,它们被称为枚举。
enum MyColors{
BLUE, RED, WHITE
}
println MyColors.values()