💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
在讨论 [匿名结构(第2.5节](http://#)) 的时候我们简要的介绍了 `typedef` ,和我们如何通过给定一个名称来缩短一个混合的 [匿名结构(第2.5节](http://#))类型。这正是 `typedef` 擅长的事情。给匿名结构类型命名甚至可以认为是它们的主要使用。事实上,它是如此的常见以至于差异多少有些模糊,许多 Haxe 用户认为 `typedef` 实际上就是结构类型。 一个 `typedef` 可以给任何其它的类型命名: ~~~ typedef IA = Array<Int>; ~~~ 这使我们能使用 `IA` 到我们通常使用 `Array<Int>` 的地方。虽然这只节省了一点击键次数,但在用于更复杂、混合的类型时会产生很大的差异。再一次,这正是为什么 `typedef` 和结构看起来那么连贯的原因: ~~~ typedef User = { var age : Int; var name : String; } ~~~ 一个 `typedef` 并不是一个文本的替换,而是实际上一个真实的类型。它甚至可以有 [类型参数(第3.2节)](http://#),就像 Haxe 标准库中的 Iterable 类型所展示的: ~~~ typedef Iterable<T> = { function iterator() : Iterator<T>; } ~~~ **可选字段** 标记一个结构类型中的字段为可选,使用 @:optional 元数据。 ~~~ typedef User = { var age : Int; var name : String; @:optional var phoneNumber : String; } ~~~