codecamp

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是透明类型别名。


hack泛型:Unresolved
hack类型别名:Opaque
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }