Wie beurteilen Sie die Art eines vollständigen Moduls mit einem destrukturierten Variablen zuweisen?

stimmen
1

Ich versuche, Dependency Injection zu einem Commonjs Modul hinzufügen, um es zu mock HTTP Anrufen einfach beim Testen.

Old - Code, der funktioniert (Flow weiß Typ http):

const myModule = require('./my-module.js');

 

// my-module.js
const http = require('http');
module.exports = {
  doSomething: () => http.get(...);
};

Neuer Code, der nicht funktioniert:

const myModule = require('./my-module.js')({http: require('http')});

 

// my-module.js
module.exports = ({ http }) => ({
  doSomething: () => http.get(...);
});

Ich erhalte die Fehlermeldung „Fehlende Typanmerkung für Destrukturierung.“ Und ich weiß nicht, welche Art Anmerkung zu verwenden.

Ich habe versucht, die http-Eigenschaft mit verschiedenen Sachen mit Anmerkungen versehen und zu sehen, was passiert, aber ohne Erfolg, zum Beispiel:

type ModuleOptions = $ReadOnly<{
  http: typeof require('http'),
}>;

module.exports = ({ http }: ModuleOptions) => ({

Irgendwelche Ideen?

Veröffentlicht am 03/12/2018 um 15:31
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Es musste passieren. mehrere Stunden, nachdem er googeln und versuchen, die Dinge, innerhalb einer halben Stunde der Entsendung auf SO würde ich es herausgefunden:

import typeof HttpModule from 'http';
type ModuleOptions = $ReadOnly<{
  http: HttpModule
}>;

module.exports = ({ http }: ModuleOptions) => {
Beantwortet am 03/12/2018 um 16:13
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more