Typings are silently `any` under moduleResolution node16/nodenext

Aperta Adatta ai principianti
#36 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

@kyrillWhite ci sta già lavorando.

Dal 7/8/2026.

  • #37 di @kyrillWhite — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
68/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
typescript
Ambito
tooling

Direzione di ricerca

Inizia dalle dichiarazioni pubblicate in src/cjs/*.d.ts e riproduci il problema usando TypeScript 5.9.3 con moduleResolution nodenext e skipLibCheck abilitato. Il lavoro è completato quando le dichiarazioni vengono risolte senza TS2835 e gli import da ecpair mantengono i loro tipi invece di diventare any con il controllo strict.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
JavaScript
Stelle
29
Fork
35
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di bitcoinjs/ecpair

Tutte le issue di bitcoinjs/ecpair

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.