Tengo una función que convierte el caso de una cadena, matriz u objeto de destino de un caso de camello a un caso de serpiente.
convertCamelToSnake (target) { // Complex logic to convert target depending on what type it is return convertedTarget }Quiero especificar tipos en esta función usando un Genérico así:
convertCamelToSnake <T>(target: T):T { // Complex logic to convert target depending on what type it is return convertedTarget } Esto funciona para cadenas y arreglos, pero convertimos las claves de un objeto dado en formato serpiente. Pero mecanografiado no se da cuenta de esto y asume que las claves siguen siendo las mismas porque declaramos que estamos devolviendo T .
¿Cómo puedo conservar la capacidad de saber el tipo que se devuelve? Es decir, cadena, matriz, objeto, dejando las claves del diccionario ambiguas.
Por ejemplo, digamos que pasamos:
const a = { helloWorld: "bob", age: 21 } a = convertCamelToSnake(a); // { hello_world: "bob", age: 21 }; a.hello_world; // Property 'hello_world' does not exist on type ¿Cómo podemos hacer que se nos permita acceder a la propiedad hello_world después de convertir el objeto, y al mismo tiempo poder inferir que el valor de retorno es de tipo object (ya que, por ejemplo, también podríamos pasar una matriz a esta función )?