JavaScript 中一般习惯使用驼峰的格式写变量名,但难保证各种接口返回的是什么格式,通常看后端语言决定,所以可以在返回后统一一下。

1. 完成功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 详见:repo
import Convertor from './Convertor';

export default class Mapper {
private obj: Obj;

constructor(obj: Obj) {
this.obj = obj
}

toCamelcase = (currentVal = this.obj): Obj => {
// ...
};

toSnakecase = (currentVal = this.obj): Obj => {
// ...
};
}

2. 测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { toCamelcase, toSnakecase } from '../src';

describe('Main', () => {
const data = {
key_of_map: 1,
'key_the-map': {
key_ofmap: 2,
key_for_map: {
' key -_nested': {
'key deep': {
'key deeper_': 'end',
b2b_Category: 'b2b',
},
},
},
},
};

test('Main.toCamelCase', () => {
expect(toCamelcase(data)).toEqual({
keyOfMap: 1,
keyTheMap: {
keyOfmap: 2,
keyForMap: {
keyNested: {
keyDeep: {
keyDeeper: 'end',
b2bCategory: 'b2b',
},
},
},
},
});
});

test('Main.toSnakecase', () => {
expect(toSnakecase(data)).toEqual({ /* ... */ });
});
});

3. 编译

1
2
3
4
5
6
7
8
9
{
"scripts": {
"build": "tsc",
"type-check": "tsc --noEmit",
"type-check:watch": "npm run type-check -- --watch",
"prepare": "npm run build",
"test": "jest --watchAll"
},
}

4. 发布

1
2
npm login
npm publish