Skip to content

Commit f2e112c

Browse files
authored
Merge pull request #250 from code0-tech/249-fix-typescript-number-issues
Fix typescript number issues
2 parents f45ef73 + 674f1e1 commit f2e112c

1 file changed

Lines changed: 33 additions & 4 deletions

File tree

build/ts/helpers/shared.struct_helper.ts

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
import {Value} from "../pb/shared";
22

3-
type PlainValue = null | number | string | boolean | Array<PlainValue> | object;
3+
type PlainValue = null | bigint | number | string | boolean | Array<PlainValue> | object;
44

55
function toAllowedValue(value: Value): PlainValue {
66
switch (value.kind.oneofKind) {
77
case "nullValue":
88
return null;
99
case "numberValue":
10-
return value.kind.numberValue;
10+
const numberValue = value.kind.numberValue;
11+
if (numberValue.number.oneofKind === "integer") {
12+
return numberValue.number.integer;
13+
} else if (numberValue.number.oneofKind === "float") {
14+
return numberValue.number.float;
15+
} else {
16+
throw new Error("Unsupported NumberValue number kind: " + numberValue.number.oneofKind);
17+
}
1118
case "stringValue":
1219
return value.kind.stringValue;
1320
case "boolValue":
@@ -30,8 +37,30 @@ function constructValue(value: PlainValue): Value {
3037
if (value === null) {
3138
return {kind: {oneofKind: "nullValue", nullValue: 0}};
3239
}
33-
if (typeof value === "number") {
34-
return {kind: {oneofKind: "numberValue", numberValue: value}};
40+
if (typeof value === "number" || typeof value === "bigint") {
41+
if (Number.isInteger(value) || typeof value === "bigint") {
42+
return {
43+
kind: {
44+
oneofKind: "numberValue", numberValue: {
45+
number: {
46+
oneofKind: "integer",
47+
integer: BigInt(value)
48+
}
49+
}
50+
}
51+
};
52+
}
53+
54+
return {
55+
kind: {
56+
oneofKind: "numberValue", numberValue: {
57+
number: {
58+
oneofKind: "float",
59+
float: value
60+
}
61+
}
62+
}
63+
};
3564
}
3665
if (typeof value === "string") {
3766
return {kind: {oneofKind: "stringValue", stringValue: value}};

0 commit comments

Comments
 (0)