@@ -3,9 +3,8 @@ type t = [#undefined | #object | #boolean | #number | #bigint | #string | #symbo
3
3
external typeof : 'a => t = "#typeof"
4
4
5
5
module Classify = {
6
- type function
7
- type object
8
- type symbol
6
+ type function = Js .Types .function_val
7
+ type object = Js .Types .obj_val
9
8
10
9
type t =
11
10
| Bool (bool )
@@ -15,15 +14,17 @@ module Classify = {
15
14
| Number (float )
16
15
| Object (object )
17
16
| Function (function )
18
- | Symbol (symbol )
17
+ | Symbol (Core__Symbol .t )
18
+ | BigInt (Core__BigInt .t )
19
19
20
20
@val external _internalClass : 'a => string = "Object.prototype.toString.call"
21
21
external _asBool : 'a => bool = "%identity"
22
22
external _asString : 'a => string = "%identity"
23
23
external _asFloat : 'a => float = "%identity"
24
24
external _asObject : 'a => object = "%identity"
25
25
external _asFunction : 'a => function = "%identity"
26
- external _asSymbol : 'a => symbol = "%identity"
26
+ external _asSymbol : 'a => Core__Symbol .t = "%identity"
27
+ external _asBigInt : 'a => Core__BigInt .t = "%identity"
27
28
28
29
let classify = value => {
29
30
switch _internalClass (value ) {
@@ -37,6 +38,7 @@ module Classify = {
37
38
| "[object AsyncFunction]" =>
38
39
Function (_asFunction (value ))
39
40
| "[object Symbol]" => Symbol (_asSymbol (value ))
41
+ | "[object BigInt]" => BigInt (_asBigInt (value ))
40
42
| _ => Object (_asObject (value ))
41
43
}
42
44
}
0 commit comments