Skip to content

Commit 3949f60

Browse files
Object docstrings (#7980)
1 parent f8d4636 commit 3949f60

File tree

1 file changed

+84
-1
lines changed

1 file changed

+84
-1
lines changed

packages/@rescript/runtime/Stdlib_Object.res

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,49 @@ y->Object.get("fruit") // Some("banana")
5757
@val
5858
external create: {..} => {..} = "Object.create"
5959

60+
/**
61+
`createWithProperties(proto, descriptors)` creates a new object that delegates to `proto` and defines additional properties using descriptor objects.
62+
63+
See [`Object.create`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create) on MDN.
64+
65+
## Examples
66+
67+
```rescript
68+
let proto = {"kind": "fruit"}
69+
let obj = Object.createWithProperties(proto, {"name": {"value": "banana"}})
70+
obj->Object.get("name") == Some("banana")
71+
obj->Object.get("kind") == Some("fruit")
72+
```
73+
*/
6074
@val external createWithProperties: ({..}, {..}) => {..} = "Object.create"
6175

76+
/**
77+
`createWithNull()` creates an object with a `null` prototype (no inherited properties).
78+
79+
See [`Object.create`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create) on MDN.
80+
81+
## Examples
82+
83+
```rescript
84+
let obj = Object.createWithNull()
85+
obj->Object.get("toString") == None
86+
```
87+
*/
6288
@val external createWithNull: (@as(json`null`) _, unit) => {..} = "Object.create"
6389

90+
/**
91+
`createWithNullAndProperties(descriptors)` creates an object with a `null` prototype and defines properties using descriptor objects.
92+
93+
See [`Object.create`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create) on MDN.
94+
95+
## Examples
96+
97+
```rescript
98+
let obj = Object.createWithNullAndProperties({"name": {"value": "banana"}})
99+
obj->Object.get("name") == Some("banana")
100+
obj->Object.get("toString") == None
101+
```
102+
*/
64103
@val external createWithNullAndProperties: (@as(json`null`) _, {..}) => {..} = "Object.create"
65104

66105
/**
@@ -91,6 +130,20 @@ See [Object.assign on MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScri
91130
@variadic @val
92131
external assignMany: ({..}, array<{..}>) => {..} = "Object.assign"
93132

133+
/**
134+
`copy(object)` creates a shallow copy of `object`.
135+
136+
See [`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) on MDN.
137+
138+
## Examples
139+
140+
```rescript
141+
let original = {"name": "banana"}
142+
let cloned = Object.copy(original)
143+
cloned->Object.get("name") == Some("banana")
144+
Object.is(original, cloned) == false
145+
```
146+
*/
94147
@val external copy: (@as(json`{}`) _, {..} as 'a) => 'a = "Object.assign"
95148

96149
/**
@@ -118,12 +171,26 @@ external get: ({..}, string) => option<'a> = ""
118171
let fruit = Symbol.make("fruit")
119172
let x = Object.make()
120173
x->Object.setSymbol(fruit, "banana")
121-
x->Object.getSymbol(fruit) // Some("banana")
174+
x->Object.getSymbol(fruit) == Some("banana")
122175
```
123176
*/
124177
@get_index
125178
external getSymbol: ({..}, Stdlib_Symbol.t) => option<'a> = ""
126179

180+
/**
181+
`getSymbolUnsafe(object, key)` reads the value stored under the symbol `key` without any optional check.
182+
183+
See [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) on MDN.
184+
185+
## Examples
186+
187+
```rescript
188+
let key = Symbol.make("meta")
189+
let obj = Object.make()
190+
obj->Object.setSymbol(key, "hello")
191+
Object.getSymbolUnsafe(obj, key) == "hello"
192+
```
193+
*/
127194
@get_index external getSymbolUnsafe: ({..}, Stdlib_Symbol.t) => 'a = ""
128195

129196
/**
@@ -140,6 +207,22 @@ external getSymbol: ({..}, Stdlib_Symbol.t) => option<'a> = ""
140207
@set_index
141208
external set: ({..}, string, 'a) => unit = ""
142209

210+
/**
211+
`setSymbol(object, key, value)` stores `value` under the symbol `key` on `object`.
212+
213+
Beware this will *mutate* the object.
214+
215+
See [`Symbol`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol) on MDN.
216+
217+
## Examples
218+
219+
```rescript
220+
let key = Symbol.make("count")
221+
let obj = Object.make()
222+
obj->Object.setSymbol(key, 5)
223+
Object.getSymbol(obj, key) == Some(5)
224+
```
225+
*/
143226
@set_index external setSymbol: ({..}, Stdlib_Symbol.t, 'a) => unit = ""
144227

145228
/**

0 commit comments

Comments
 (0)