Estoy tratando de publicar en DefinitelyTyped y noté que todos están colocando un archivo de definiciones, index.d.ts, que contiene un resumen de todos los tipos.
En cambio, mi secuencia de comandos pasa por mi base de código y genera archivos de tipo individuales para todos mis componentes, y el archivo index.d.ts es solo las importaciones y exportaciones, sin definiciones de tipo.
const glob = require('glob'); const jsc = require('jscodeshift'); const flowParser = require('jscodeshift/parser/flow'); const fs = require('fs'); const convert = require('@khanacademy/flow-to-ts/dist/convert.bundle.js'); const ts = require('typescript'); const files = glob.sync('src/**/*.js', { root: './', ignore: ['src/**/*.*test*.js'], }); console.log('Files-found', files.length); files.forEach((file) => { const FILE_NAME = file.split('/')[file.split('/').length - 1].replace('js', 'ts'); const flowCode = fs.readFileSync(file, 'utf-8'); const ast = jsc(flowCode, { parser: flowParser(), }); ast .find(jsc.GenericTypeAnnotation, { id: { name: 'TimeoutID' }, }) .replaceWith('number'); ast .find(jsc.GenericTypeAnnotation, { id: { name: 'AnimationFrameID' }, }) .replaceWith('number'); ast .find(jsc.GenericTypeAnnotation, { id: { name: 'MediaQueryListListener' }, }) .replaceWith('MediaQueryList'); const transformedCode = ast.toSource(); console.warn('FileName', FILE_NAME); const typescriptCode = convert.convert(transformedCode, { printWidth: 80, singleQuote: true, semi: false, prettier: true, }); fs.writeFileSync(`typescript/${FILE_NAME}`, typescriptCode, (err) => { console.log('Error:', err); }); }); const tsFiles = glob.sync('typescript/**/*.ts'); console.log('tsfiles', tsFiles.length); const options = { declaration: true, emitDeclarationOnly: true, declarationDir: 'typescript/', }; const program = ts.createProgram(tsFiles, options); const res = program.emit(); // In case there was some error while generating declaration, // throw an error. console.log(res.diagnostics); res.diagnostics.forEach((obj) => { console.log('file: ', obj.file.fileName); console.error('error: ', obj.messageText); });¿Cómo genero solo el archivo index.d.ts con definiciones reales?