Skip to content

Commit 792f892

Browse files
committed
chore: improve types
1 parent 732346d commit 792f892

File tree

3 files changed

+17
-36
lines changed

3 files changed

+17
-36
lines changed

dist/js/utils/object.d.ts

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,28 @@ export declare function getOneMatchFromObject(obj: object, attribute: string, va
1414
*/
1515
export declare function convertKeysToCamelCaseForObject(obj: object): import("lodash").Dictionary<any>;
1616
export declare function renameKeysForObject<T>(o: T, keysOriginal: string[], keysRenamed: string[]): T;
17-
export interface NameValueObject {
17+
export type NameValueObject = {
1818
name: string;
1919
value: unknown;
20-
[key: string]: unknown;
21-
}
20+
units?: string;
21+
};
22+
export type NameValueObjectExtended = NameValueObject & {
23+
[key: string]: NameValueObject | string | number | undefined;
24+
};
2225
/**
2326
* @summary Converts object into string. Recursive. Required properties for object: "name", "value".
2427
* "units" property is ignored. Only one extra property is allowed. Function is called recursively on extraProperty.
2528
* E.g. {name: "propName", value: 1} -> 'propName=1'
2629
* {name: "propName", value: 1, extraProp: {name: "extraPropName", value: "2"}} -> "propName=1:extraPropName=2"
27-
* @param {Object} obj Object to stringify.
28-
* @param {String} [levelSeparator] ':' by default.
29-
* @param {String} [keyValueSeparator] '=' by default.
30-
* @param {String} [prefix] Empty by default.
3130
*/
3231
export declare function stringifyObject(obj: NameValueObject, levelSeparator?: string, keyValueSeparator?: string, prefix?: string): string;
3332
/**
3433
* @summary Flattens complex object into object with single key-value pair. Required properties for object: "name", "value".
3534
* "units" property is ignored. Only one extra property is allowed. E.g.
3635
* {name: 'propName', value: 1} -> {propName: 1}
3736
* {name: "propName", value: 1, extraProp: {name: "extraPropName", value: "2"}} -> {"propName:extraPropName=2": 1}
38-
* @param {Object} obj Object to stringify.
39-
* @param {String} [levelSeparator] ':' by default.
40-
* @param {String} [keyValueSeparator] '=' by default.
41-
* @param {String} [suffix]
42-
* @return {Object}
4337
*/
44-
export declare function flattenObject(obj: NameValueObject, levelSeparator?: string, keyValueSeparator?: string, suffix?: string | undefined): {
38+
export declare function flattenObject(obj: NameValueObjectExtended, levelSeparator?: string, keyValueSeparator?: string, suffix?: string | undefined): {
4539
[x: string]: unknown;
4640
};
4741
/**

dist/js/utils/object.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,6 @@ o, keysOriginal = [], keysRenamed = []) {
8484
* "units" property is ignored. Only one extra property is allowed. Function is called recursively on extraProperty.
8585
* E.g. {name: "propName", value: 1} -> 'propName=1'
8686
* {name: "propName", value: 1, extraProp: {name: "extraPropName", value: "2"}} -> "propName=1:extraPropName=2"
87-
* @param {Object} obj Object to stringify.
88-
* @param {String} [levelSeparator] ':' by default.
89-
* @param {String} [keyValueSeparator] '=' by default.
90-
* @param {String} [prefix] Empty by default.
9187
*/
9288
function stringifyObject(obj, levelSeparator = ":", keyValueSeparator = "=", prefix = "") {
9389
const requiredKeys = ["name", "value"];
@@ -118,11 +114,6 @@ function stringifyObject(obj, levelSeparator = ":", keyValueSeparator = "=", pre
118114
* "units" property is ignored. Only one extra property is allowed. E.g.
119115
* {name: 'propName', value: 1} -> {propName: 1}
120116
* {name: "propName", value: 1, extraProp: {name: "extraPropName", value: "2"}} -> {"propName:extraPropName=2": 1}
121-
* @param {Object} obj Object to stringify.
122-
* @param {String} [levelSeparator] ':' by default.
123-
* @param {String} [keyValueSeparator] '=' by default.
124-
* @param {String} [suffix]
125-
* @return {Object}
126117
*/
127118
// eslint-disable-next-line default-param-last
128119
function flattenObject(obj, levelSeparator = ":", keyValueSeparator = "=", suffix = undefined) {

src/js/utils/object.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -91,20 +91,21 @@ export function renameKeysForObject(
9191
return result;
9292
}
9393

94-
export interface NameValueObject {
94+
export type NameValueObject = {
9595
name: string;
9696
value: unknown;
97-
[key: string]: unknown;
98-
}
97+
units?: string;
98+
};
99+
100+
export type NameValueObjectExtended = NameValueObject & {
101+
[key: string]: NameValueObject | string | number | undefined;
102+
};
103+
99104
/**
100105
* @summary Converts object into string. Recursive. Required properties for object: "name", "value".
101106
* "units" property is ignored. Only one extra property is allowed. Function is called recursively on extraProperty.
102107
* E.g. {name: "propName", value: 1} -> 'propName=1'
103108
* {name: "propName", value: 1, extraProp: {name: "extraPropName", value: "2"}} -> "propName=1:extraPropName=2"
104-
* @param {Object} obj Object to stringify.
105-
* @param {String} [levelSeparator] ':' by default.
106-
* @param {String} [keyValueSeparator] '=' by default.
107-
* @param {String} [prefix] Empty by default.
108109
*/
109110
export function stringifyObject(
110111
obj: NameValueObject,
@@ -147,15 +148,10 @@ export function stringifyObject(
147148
* "units" property is ignored. Only one extra property is allowed. E.g.
148149
* {name: 'propName', value: 1} -> {propName: 1}
149150
* {name: "propName", value: 1, extraProp: {name: "extraPropName", value: "2"}} -> {"propName:extraPropName=2": 1}
150-
* @param {Object} obj Object to stringify.
151-
* @param {String} [levelSeparator] ':' by default.
152-
* @param {String} [keyValueSeparator] '=' by default.
153-
* @param {String} [suffix]
154-
* @return {Object}
155151
*/
156152
// eslint-disable-next-line default-param-last
157153
export function flattenObject(
158-
obj: NameValueObject,
154+
obj: NameValueObjectExtended,
159155
levelSeparator = ":",
160156
keyValueSeparator = "=",
161157
suffix: string | undefined = undefined,
@@ -176,7 +172,7 @@ export function flattenObject(
176172
}
177173

178174
const extraPropertyKey = extraKeys[0];
179-
const extraPropertyValue = obj[extraKeys[0]] as NameValueObject;
175+
const extraPropertyValue = obj[extraKeys[0]];
180176

181177
if (!isObject(extraPropertyValue)) {
182178
return {

0 commit comments

Comments
 (0)