Typings are silently `any` under moduleResolution node16/nodenext

Abierto Apto para principiantes
#36 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@kyrillWhite ya está trabajando en esto.

Desde el 7/8/2026.

  • #37 de @kyrillWhite — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
typescript
Área
tooling

Línea de trabajo

Comienza con las declaraciones publicadas en src/cjs/*.d.ts y reproduce el problema usando TypeScript 5.9.3 con moduleResolution nodenext y skipLibCheck habilitado. El trabajo estará terminado cuando las declaraciones se resuelvan sin TS2835 y las importaciones de ecpair conserven sus tipos en lugar de convertirse en any bajo una comprobación estricta.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

The published typings in src/cjs/*.d.ts use extensionless relative imports:

// src/cjs/index.d.ts
export { ECPairFactory as default, ECPairFactory, ... } from './ecpair';

The root package.json has "type": "module" and there is no nested package.json in
src/cjs/, so TypeScript treats these .d.ts files as ES modules — and in ESM, relative
imports require explicit file extensions. ./ecpair fails to resolve:

src/cjs/index.d.ts(1,166): error TS2835: Relative import paths need explicit file
extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'.

With skipLibCheck: true (the common setup) the error is suppressed, and everything
imported from ecpair is silently any, even under --strict:

import { ECPairFactory } from 'ecpair';
const x: number = ECPairFactory; // compiles without error

Repro: ecpair 3.0.1, TypeScript 5.9.3, --module nodenext --moduleResolution nodenext,
ESM project.

Lenguaje dominante
JavaScript
Estrellas
29
Forks
35
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de bitcoinjs/ecpair

Todos los issues de bitcoinjs/ecpair

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.