Skip to content

Convert between camelCase and snake_case while preserving typescript information

License

Notifications You must be signed in to change notification settings

RossWilliams/ts-case-convert

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
github-actions
Aug 28, 2024
04ae784 · Aug 28, 2024

History

67 Commits
Aug 28, 2024
Aug 28, 2024
Jun 8, 2021
Jan 15, 2024
Jan 15, 2024
Dec 10, 2023
Aug 28, 2024
Aug 28, 2024
Aug 28, 2024
Dec 10, 2023
Aug 28, 2024
Mar 14, 2021
Dec 10, 2023
Mar 31, 2021
Jun 8, 2021
Mar 22, 2021
Aug 28, 2024
Aug 28, 2024
Aug 28, 2024
Dec 10, 2023
Mar 31, 2021
Aug 28, 2024

Repository files navigation

ts-case-convert

npm version npm bundle size npm type definitions GitHub package.json dependency version (dev dep on branch) Documentation Maintenance License: Apache--2.0

ts-case-convert converts object keys between camelCase and snake_case while preserving Typescript type information, code completion, and type validation. See tests for detailed conversion tests.

Usage

const camel = objectToCamel({
  hello_world: 'helloWorld',
  a_number: 5,
  an_array: [1, 2, 4],
  null_object: null,
  undef_object: undefined,
  an_array_of_objects: [{ a_b: 'ab', a_c: 'ac' }],
  an_object: {
    a_1: 'a1',
    a_2: 'a2',
  },
});

type CheckCamel = typeof camel.anArrayOfObjects[0]['aB']; // -> 'string'
const ab: CheckCamel = camel.anArrayOfObjects[0]['aB']; // -> valid
console.log(camel.anArrayOfObjects.aB); // -> 'ab'

const snake = objectToSnake({
  helloWorld: 'helloWorld',
  aNumber: 5,
  anArray: [1, 2, 4],
  nullObject: null,
  undefObject: undefined,
  anArrayOfObjects: [{ aB: 'ab', aC: 'ac' }],
  anObject: {
    A1: 'a_1',
    A2: 'a_2',
  },
});

type CheckSnake = typeof snake.an_array_of_objects[0]['a_b']; // -> 'string'
const ab: CheckSnake = snake.an_array_of_objects[0]['a_b']; // -> valid
console.log(snake.an_array_of_objects.a_b); // -> 'ab'

Run tests

yarn run test

Documentation

See tests.

📝 License

Copyright © 2021 Ross Williams.
This project is Apache--2.0 licensed.