Mein Code ist die async
Bibliothek, speziell dieser Callback-Typ (source):TypeScript strict null checks: Wie kann man Bibliothekseinschränkungen überschreiben?
interface AsyncResultCallback<T> { (err: Error, result: T): void; }
In meinem Typoskript Code mit strictNullChecks
aktiviert ist, nennt es wie dies fehlschlägt:
cb(null, someObject);
JetztError:(239, 16) TS2345: Argument of type 'null' is not assignable to parameter of type 'Error'.
Ich bin nicht sicher, ob die Definition des Bibliothekentyps falsch ist oder nicht, aber sagen wir es so, und die Schnittstelle sollte mit err
optional definiert werden, wie folgt:
interface AsyncResultCallback<T> { (err?: Error, result: T): void; }
Was kann ich tun, Typoskript zu überzeugen vorbei null
als ersten Parameter des Callback zu ermöglichen? Ich habe schon "skipLibCheck": true
und "skipDefaultLibCheck": true
ausprobiert aber keine Freude.
Danke, (1) ist keine Option, weil es die Logik des Codes ändert und die App brechen könnte, Option (2) funktioniert, nur nicht genau so - aber 'declare global {...' funktioniert. Option (3) besteht darin, 'cb' als' any' einzugeben, wenn es als Parameter kommt, was in meinem Fall der Fall ist. – Borek
Es sollte mit 'declare module" async "' funktionieren, was auch der richtige Weg ist, da "global" "etwas anderes bedeutet". Wenn 'cb: any' verwendet wird, funktioniert es auch mit' cb: Function', aber dann haben Sie die Typensicherheit verloren. –
'deklarieren Modul" async "' gibt mir "TS2671: Modul kann 'async' nicht erweitert werden, da es in eine Nicht-Modul-Entität aufgelöst wird.". Möglicherweise verwandt: https://github.com/Microsoft/TypeScript/issues/7148 – Borek