@@ -37,7 +37,7 @@ You can also nest definitions of records.
3737<CodeTab labels = { [" ReScript" , " JS Output" ]} >
3838
3939``` res example
40- type person = {
40+ type nestedPerson = {
4141 age: int,
4242 name: string,
4343 notificationSettings: {
@@ -66,6 +66,8 @@ let person = {
6666 allowPasswordLogin: false ,
6767 },
6868};
69+
70+ export { person };
6971```
7072
7173</CodeTab >
@@ -87,7 +89,7 @@ type personNotificationSettings = {
8789 allowPasswordLogin: bool,
8890}
8991
90- type person = {
92+ type explicitPerson = {
9193 age: int,
9294 name: string,
9395 notificationSettings: personNotificationSettings
@@ -113,6 +115,8 @@ let person = {
113115 allowPasswordLogin: false ,
114116 },
115117};
118+
119+ export { person };
116120```
117121
118122</CodeTab >
@@ -147,11 +151,16 @@ The type is found by looking above the `me` value. **Note**: if the type instead
147151
148152``` res example
149153// School.res
150- type person = {age: int, name: string}
154+ type schoolPerson = {age: int, name: string}
151155```
152156
153157``` js
154- // Empty output
158+ let me = {
159+ age: 5 ,
160+ name: " Big ReScript" ,
161+ };
162+
163+ export { me };
155164```
156165
157166</CodeTab >
@@ -161,7 +170,7 @@ type person = {age: int, name: string}
161170``` res
162171// Example.res
163172
164- let me: School.person = {age: 20, name: "Big ReScript"}
173+ let me: School.schoolPerson = {age: 20, name: "Big ReScript"}
165174/* or */
166175let me2 = {School.age: 20, name: "Big ReScript"}
167176```
@@ -192,7 +201,14 @@ let name = me.name
192201```
193202
194203``` js
195- var name = " Big ReScript" ;
204+ let me = {
205+ age: 5 ,
206+ name: " Big ReScript" ,
207+ };
208+
209+ let name = " Big ReScript" ;
210+
211+ export { me , name };
196212```
197213
198214</CodeTab >
@@ -208,10 +224,17 @@ let meNextYear = {...me, age: me.age + 1}
208224```
209225
210226``` js
211- var meNextYear = {
212- age: 21 ,
227+ let meNextYear = {
228+ age: 6 ,
229+ name: " Big ReScript" ,
230+ };
231+
232+ let me = {
233+ age: 5 ,
213234 name: " Big ReScript" ,
214235};
236+
237+ export { me , meNextYear };
215238```
216239
217240</CodeTab >
@@ -225,22 +248,29 @@ Record fields can optionally be mutable. This allows you to efficiently update t
225248<CodeTab labels = { [" ReScript" , " JS Output" ]} >
226249
227250``` res example
228- type person = {
251+ type mutablePerson = {
229252 name: string,
230253 mutable age: int
231254}
232255
233- let baby = {name: "Baby ReScript", age: 5}
256+ let baby: mutablePerson = {name: "Baby ReScript", age: 5}
234257baby.age = baby.age + 1 // `baby.age` is now 6. Happy birthday!
235258```
236259
237260``` js
238- var baby = {
261+ let baby = {
239262 name: " Baby ReScript" ,
240263 age: 5 ,
241264};
242265
243266baby .age = (baby .age + 1 ) | 0 ;
267+
268+ let me = {
269+ age: 5 ,
270+ name: " Big ReScript" ,
271+ };
272+
273+ export { me , baby };
244274```
245275
246276</CodeTab >
@@ -258,14 +288,19 @@ ReScript [`v10`](../../blog/release-10-0-0.mdx#experimental-optional-record-fiel
258288<CodeTab labels = { [" ReScript" , " JS Output" ]} >
259289
260290``` res example
261- type person = {
291+ type optionalPerson = {
262292 age: int,
263293 name?: string
264294}
265295```
266296
267297``` js
268- // Empty output
298+ let me = {
299+ age: 5 ,
300+ name: " Big ReScript" ,
301+ };
302+
303+ export { me };
269304```
270305
271306</CodeTab >
@@ -279,30 +314,32 @@ You can omit any optional fields when creating a record. Not setting an optional
279314<CodeTab labels = { [" ReScript" , " JS Output" ]} >
280315
281316``` res example
282- type person = {
317+ type optionalPerson = {
283318 age: int,
284319 name?: string
285320}
286321
287- let me = {
322+ let me: optionalPerson = {
288323 age: 5,
289324 name: "Big ReScript"
290325}
291326
292- let friend = {
327+ let friend: optionalPerson = {
293328 age: 7
294329}
295330```
296331
297332``` js
298- var me = {
333+ let me = {
299334 age: 5 ,
300335 name: " Big ReScript" ,
301336};
302337
303- var friend = {
338+ let friend = {
304339 age: 7 ,
305340};
341+
342+ export { me , friend };
306343```
307344
308345</CodeTab >
@@ -316,12 +353,12 @@ Updating an optional field via an immutable update above lets you set that field
316353<CodeTab labels = { [" ReScript" , " JS Output" ]} >
317354
318355``` res example
319- type person = {
356+ type personWithOptionalName = {
320357 age: int,
321358 name?: string
322359}
323360
324- let me = {
361+ let me: personWithOptionalName = {
325362 age: 123,
326363 name: "Hello"
327364}
@@ -333,18 +370,18 @@ let withoutName = {
333370```
334371
335372``` js
336- import * as Caml_obj from " ./stdlib/caml_obj.js" ;
337-
338- var me = {
373+ let me = {
339374 age: 123 ,
340375 name: " Hello" ,
341376};
342377
343- var newrecord = Caml_obj . obj_dup (me) ;
378+ let newrecord = { ... me } ;
344379
345380newrecord .name = " New Name" ;
346381
347- var withoutName = newrecord;
382+ let withoutName = newrecord;
383+
384+ export { me , withoutName };
348385```
349386
350387</CodeTab >
@@ -354,12 +391,12 @@ However, if you want to set the field to an optional value, you prefix that valu
354391<CodeTab labels = { [" ReScript" , " JS Output" ]} >
355392
356393``` res example
357- type person = {
394+ type personWithOptionalName = {
358395 age: int,
359396 name?: string
360397}
361398
362- let me = {
399+ let me: personWithOptionalName = {
363400 age: 123,
364401 name: "Hello"
365402}
@@ -373,20 +410,20 @@ let withoutName = {
373410```
374411
375412``` js
376- import * as Caml_obj from " ./stdlib/caml_obj.js" ;
377-
378- var me = {
413+ let me = {
379414 age: 123 ,
380415 name: " Hello" ,
381416};
382417
383- var maybeName = " My Name" ;
418+ let maybeName = " My Name" ;
384419
385- var newrecord = Caml_obj . obj_dup (me) ;
420+ let newrecord = { ... me } ;
386421
387422newrecord .name = maybeName;
388423
389- var withoutName = newrecord;
424+ let withoutName = newrecord;
425+
426+ export { me , maybeName , withoutName };
390427```
391428
392429</CodeTab >
0 commit comments