tengo funcion como:
getSomething<T>(value: T): any{ const temp = this.doSomething<T>(value); ... } doSomething<T>(value: T): any { return value.replace(/\s/g, ''); }Inicialmente, el valor pasado tiene un tipo específico de tipo T, sé muy bien que en la función final será una cadena. Sin embargo, al hacerlo de esta manera, no puedo usar la función de reemplazo. Ayuda.
Debe decir que el valor tendría métodos de cadena. Como esto:
getSomething<T extends string>(value: T): any{ const temp = this.doSomething<T>(value); ... } doSomething<T extends string>(value: T): any { return value.replace(/\s/g, ''); }Piensa en tu problema de la siguiente manera:
De alguna manera, debe decirle a Typescript que espera obtener un argumento que tenga el método "reemplazar ()". Puede hacerlo creando una interfaz adicional y mencionando que el tipo genérico amplía esa interfaz:
interface Replacable { replace: (regexp: RegExp, str: string) => string } function getSomething<T extends Replacable>(value: T): any{ const temp = doSomething<T>(value); console.log(temp); } function doSomething<T extends Replacable>(value: T): any { return value.replace(/\s/g, ''); }Lea más sobre restricciones genéricas aquí: https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraints