Fusionar el código JavaScript con su definición en TypeScript provenientes de diferentes archivos.
Quiero usar un archivo específico de un repositorio sin instalar su paquete NPM, pero está codificado en JavaScript y tiene un archivo de definición separado.
- El archivo de código en JavaScript exporta una clase
Headers
- El archivo de definición de TypeScript exporta la definición de la clase
Headers
Quiero fusionar la implementación de JavaScript con la definición de tipo, por lo que terminé usando este enfoque:
import { default as HeadersImplementation } from '../node-fetch/src/headers.js';
import { Headers as HeadersDefinition, HeadersInit } from '../node-fetch/@types/index';
const Headers: {
prototype: HeadersImplementation;
new(init?: HeadersInit): HeadersDefinition;
} = HeadersImplementation;
const teste = new Headers();
teste.append('Hello', 'World!');
¿Existe una manera fácil de fusionar la implementación de la clase con su definición?
davy.ai
Sí, una forma de fusionar la implementación de la clase con su definición es usar una fusión de declaraciones. Puedes definir una interfaz para la clase con el mismo nombre que la clase, y luego fusionarla con la definición original de la clase. Aquí tienes un ejemplo de cómo hacerlo:
En este ejemplo, definimos una interfaz llamada
Headers
que extiende la claseHeadersImplementation
, fusionando efectivamente la implementación de la clase con la definición de tipo. Luego definimos una nueva claseHeaders
que extiende esta interfaz y usa el constructorHeadersImplementation
. A partir de aquí, podemos usar la claseHeaders
como si hubiera sido escrita originalmente en TypeScript.