Saltar al contenido

ReactJS y Typescript: se refiere a un valor, pero se usa como un tipo aquí (TS2749)

Hola usuario de nuestro sitio web, tenemos la solución a tu búsqueda, continúa leyendo y la encontrarás a continuación.

Solución:

Asegúrese de estar en un archivo .tsx y no en un archivo .ts

Así que me encontré con este problema varias veces en mi código antes, pero solo descubrí la razón por la que esto estaba sucediendo hoy.

TL; DR al final para la respuesta real a la pregunta.

Cuando crea una clase en TypeScript, el nombre de esa clase se refiere tanto al tipo de instancia como al valor de la clase de Javascript. Si hace referencia a esa clase como un tipo, TypeScript lo detecta automáticamente como el tipo de instancia de esa clase. Y si hace referencia a esa clase en el tiempo de ejecución, simplemente la usa como en el significado de Javascript. Y todo es bueno y elegante hasta ahora.

class MyClass 
let abc: MyClass; // ts recognizes as instance type
abc = new MyClass(); // completely fine, used here as the javascript value

Sin embargo, el verdadero problema es cuando exportas la clase desde un módulo. dinamicamente. Cuando exporta la clase de alguna manera, TypeScript solo puede exportar el valor de Javascript de la clase y no exporta el tipo. Entonces, si lo importa en otro módulo e intenta hacer referencia a él como un tipo, obtendrá TS2749.

let intervariable = class MyClass
export const MyClass = intervariable; // TypeScript does not export type here.
import MyClass from './myclass';

let abc: MyClass; // TypeScript error TS2749

Cuando esto sucede, especialmente si está fuera de su control, mi solución para obtener el tipo de instancia fue simplemente usar InstanceType y typeof:

import MyClass from './myclass';

let abc: InstanceType; // no error
// the rest...

El operador typeof le proporciona el tipo de constructor de clase para un valor de clase, y el tipo de instancia genérico le proporciona el tipo de instancia que desea.

TL;DR: En tu caso solo tienes que escribir InstanceType en vez de TextField.

cambio *.ts archivo a *.tsx

en mi caso funciona

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *