@@ -2482,7 +2482,7 @@ <h2>Everything is an Expression (at least, as much as possible)</h2>
2482
2482
2483
2483
< span class ="cm-variable "> alert</ span > ((< span class ="cm-keyword "> function</ span > () {
2484
2484
< span class ="cm-keyword "> try</ span > {
2485
- < span class ="cm-keyword "> return</ span > < span class ="cm-variable "> nonexistent</ span > < span class ="cm-operator "> /</ span > < span class ="cm-variable "> void</ span > < span class ="cm-number "> 0</ span > ;
2485
+ < span class ="cm-keyword "> return</ span > < span class ="cm-variable "> nonexistent</ span > < span class ="cm-operator "> /</ span > < span class ="cm-keyword "> void</ span > < span class ="cm-number "> 0</ span > ;
2486
2486
} < span class ="cm-keyword "> catch</ span > (< span class ="cm-def "> error1</ span > ) {
2487
2487
< span class ="cm-variable "> error</ span > < span class ="cm-operator "> =</ span > < span class ="cm-variable-2 "> error1</ span > ;
2488
2488
< span class ="cm-keyword "> return</ span > < span class ="cm-string-2 "> `And the error is ... ${</ span > < span class ="cm-variable "> error</ span > < span class ="cm-string-2 "> }`</ span > ;
@@ -2846,7 +2846,7 @@ <h2>The Existential Operator</h2>
2846
2846
</ textarea >
2847
2847
< pre class ="placeholder-code "> < span class ="cm-keyword "> var</ span > < span class ="cm-def "> ref</ span > , < span class ="cm-def "> zip</ span > ;
2848
2848
2849
- < span class ="cm-variable "> zip</ span > < span class ="cm-operator "> =</ span > < span class ="cm-keyword "> typeof</ span > < span class ="cm-variable "> lottery</ span > .< span class ="cm-property "> drawWinner</ span > < span class ="cm-operator "> ===</ span > < span class ="cm-string "> "function"</ span > < span class ="cm-operator "> ?</ span > (< span class ="cm-variable "> ref</ span > < span class ="cm-operator "> =</ span > < span class ="cm-variable "> lottery</ span > .< span class ="cm-property "> drawWinner</ span > ().< span class ="cm-property "> address</ span > ) < span class ="cm-operator "> !=</ span > < span class ="cm-atom "> null</ span > < span class ="cm-operator "> ?</ span > < span class ="cm-variable "> ref</ span > .< span class ="cm-property "> zipcode</ span > : < span class ="cm-variable "> void</ span > < span class ="cm-number "> 0</ span > : < span class ="cm-variable "> void</ span > < span class ="cm-number "> 0</ span > ;
2849
+ < span class ="cm-variable "> zip</ span > < span class ="cm-operator "> =</ span > < span class ="cm-keyword "> typeof</ span > < span class ="cm-variable "> lottery</ span > .< span class ="cm-property "> drawWinner</ span > < span class ="cm-operator "> ===</ span > < span class ="cm-string "> "function"</ span > < span class ="cm-operator "> ?</ span > (< span class ="cm-variable "> ref</ span > < span class ="cm-operator "> =</ span > < span class ="cm-variable "> lottery</ span > .< span class ="cm-property "> drawWinner</ span > ().< span class ="cm-property "> address</ span > ) < span class ="cm-operator "> !=</ span > < span class ="cm-atom "> null</ span > < span class ="cm-operator "> ?</ span > < span class ="cm-variable "> ref</ span > .< span class ="cm-property "> zipcode</ span > : < span class ="cm-keyword "> void</ span > < span class ="cm-number "> 0</ span > : < span class ="cm-keyword "> void</ span > < span class ="cm-number "> 0</ span > ;
2850
2850
</ pre >
2851
2851
</ div >
2852
2852
</ div >
@@ -4605,28 +4605,50 @@ <h2>Type Annotations</h2>
4605
4605
< div class ="col-md-6 coffeescript-input-column ">
4606
4606
< textarea class ="coffeescript-input " id ="type_annotations-coffee "> # @flow
4607
4607
4608
- fn = (str ###: string ###, num ###: number ###) ###: string ### ->
4609
- str + num
4608
+ ###::
4609
+ type Obj = {
4610
+ num: number,
4611
+ };
4612
+ ###
4613
+
4614
+ fn = (str ###: string ###, obj ###: Obj ###) ###: string ### ->
4615
+ str + obj.num
4610
4616
</ textarea >
4611
4617
< pre class ="placeholder-code "> < span class ="cm-comment "> # @flow</ span >
4612
4618
4613
- < span class ="cm-variable "> fn</ span > < span class ="cm-punctuation "> =</ span > < span class ="cm-punctuation "> (</ span > < span class ="cm-variable "> str</ span > < span class ="cm-comment "> ###: string ###</ span > < span class ="cm-punctuation "> ,</ span > < span class ="cm-variable "> num</ span > < span class ="cm-comment "> ###: number ###</ span > < span class ="cm-punctuation "> )</ span > < span class ="cm-comment "> ###: string ###</ span > < span class ="cm-operator "> -> </ span >
4614
- < span class ="cm-variable "> str</ span > < span class ="cm-operator "> +</ span > < span class ="cm-variable "> num</ span >
4619
+ < span class ="cm-comment "> ###::</ span >
4620
+ < span class ="cm-comment "> type Obj = {</ span >
4621
+ < span class ="cm-comment "> num: number,</ span >
4622
+ < span class ="cm-comment "> };</ span >
4623
+ < span class ="cm-comment "> ###</ span >
4624
+
4625
+ < span class ="cm-variable "> fn</ span > < span class ="cm-punctuation "> =</ span > < span class ="cm-punctuation "> (</ span > < span class ="cm-variable "> str</ span > < span class ="cm-comment "> ###: string ###</ span > < span class ="cm-punctuation "> ,</ span > < span class ="cm-variable "> obj</ span > < span class ="cm-comment "> ###: Obj ###</ span > < span class ="cm-punctuation "> )</ span > < span class ="cm-comment "> ###: string ###</ span > < span class ="cm-operator "> -> </ span >
4626
+ < span class ="cm-variable "> str</ span > < span class ="cm-operator "> +</ span > < span class ="cm-variable "> obj</ span > < span class ="cm-punctuation "> .</ span > < span class ="cm-property "> num</ span >
4615
4627
</ pre >
4616
4628
</ div >
4617
4629
< div class ="col-md-6 javascript-output-column ">
4618
4630
< textarea class ="javascript-output " id ="type_annotations-js "> // @flow
4619
4631
var fn;
4620
4632
4621
- fn = function(str/*: string */, num/*: number */)/*: string */ {
4622
- return str + num;
4633
+ /*::
4634
+ type Obj = {
4635
+ num: number,
4636
+ };
4637
+ */
4638
+ fn = function(str/*: string */, obj/*: Obj */)/*: string */ {
4639
+ return str + obj.num;
4623
4640
};
4624
4641
</ textarea >
4625
4642
< pre class ="placeholder-code "> < span class ="cm-comment "> // @flow</ span >
4626
4643
< span class ="cm-keyword "> var</ span > < span class ="cm-def "> fn</ span > ;
4627
4644
4628
- < span class ="cm-variable "> fn</ span > < span class ="cm-operator "> =</ span > < span class ="cm-keyword "> function</ span > (< span class ="cm-def "> str</ span > < span class ="cm-comment "> /*: string */</ span > , < span class ="cm-def "> num</ span > < span class ="cm-comment "> /*: number */</ span > )< span class ="cm-comment "> /*: string */</ span > {
4629
- < span class ="cm-keyword "> return</ span > < span class ="cm-variable-2 "> str</ span > < span class ="cm-operator "> +</ span > < span class ="cm-variable-2 "> num</ span > ;
4645
+ < span class ="cm-comment "> /*::</ span >
4646
+ < span class ="cm-comment "> type Obj = {</ span >
4647
+ < span class ="cm-comment "> num: number,</ span >
4648
+ < span class ="cm-comment "> };</ span >
4649
+ < span class ="cm-comment "> */</ span >
4650
+ < span class ="cm-variable "> fn</ span > < span class ="cm-operator "> =</ span > < span class ="cm-keyword "> function</ span > (< span class ="cm-def "> str</ span > < span class ="cm-comment "> /*: string */</ span > , < span class ="cm-def "> obj</ span > < span class ="cm-comment "> /*: Obj */</ span > )< span class ="cm-comment "> /*: string */</ span > {
4651
+ < span class ="cm-keyword "> return</ span > < span class ="cm-variable-2 "> str</ span > < span class ="cm-operator "> +</ span > < span class ="cm-variable-2 "> obj</ span > .< span class ="cm-property "> num</ span > ;
4630
4652
};
4631
4653
</ pre >
4632
4654
</ div >
0 commit comments