typescript - Crear un archivo d.ts para un módulo existente
Estoy intentando crear un archivo d.ts para la biblioteca React StaticContainer.
La librería instalada en NPM se ve así:
var React = require('react');
var StaticContainer = (function (_React$Component) {
function StaticContainer() {
// ...
}
// ...
return StaticContainer;
})(React.Component);
module.exports = StaticContainer;
Un ejemplo de uso es así:
var StaticContainer = require('react-static-container');
Y no estoy seguro de cómo crear una declaración para esto y usarla en TypeScript. Hasta ahora, de mi investigación he llegado a esto:
import * as StaticContainer from 'react-static-container'
Y este archivo d.ts:
interface StaticContainer extends React.Component<any, any> {
shouldUpdate?:boolean;
}
declare module "react-static-container" {
export = StaticContainer;
}
Sin embargo, TSC me da este error:
Error:(3, 34) TS2497: El módulo '"react-static-container"' se resuelve como una entidad no modular y no puede ser importado usando esta construcción.
Estoy bastante confundido sobre cómo el module.exports=StaticContainer debería traducirse a un archivo d.ts. ¿Cómo se hace esto?
Respuesta #1
El módulo '"react-static-container"' se resuelve en una entidad que no es un módulo y no se puede importar usando esta construcción.
Exactamente lo que dice el error. Necesitas importar bibliotecas de estilo export = con import require. Esto se debe a la especificación de ES6.
import StaticContainer = require('react-state-container');
