hack类型别名:简介
一个类型别名是一个类型说明符或定义的缩写名称。一旦定义了类型别名,几乎可以在任何允许关联类型的上下文中使用它。instanceof由于泛型的技术限制,唯一的上下文类型别名是不允许的。
任何给定的类型都可以有多个别名,并且类型别名本身可以具有别名。类型别名可以是参数化的或通用的。
被别名的类型可以是任何东西。这可能是那样简单int,string或类类型的名称; 或者像地图类型的数组,元组或形状一样复杂。
在以下示例中:
- Counter被定义为一个别名int。
- Point被定义为两个元组的别名int。
- Estimate被定义为用于一个别名Pair的int和float。
- StringTransformer被定义为可返回空 值的可调用的别名string。
- MyCallback<T>被定义为返回的通用 可调用的别名void。
<?hh
type Counter = int;
newtype Point = (int, int);
newtype Estimate = Pair<int, float>;
newtype StringTransformer = (function(string): ?string);
newtype MyCallback<T> = (function(T): void);
newtype和type关键字
类型别名是使用newtype和type关键字创建的,使用的别名newtype是一个不透明的类型别名,使用创建的别名type是透明类型别名。