Ich habe ein Modul, das chalk
Farben für meine spezifischen Bedürfnisse patcht. Hier ist der Code:Wie patch Objekte in TypeScript?
import { ChalkStyleElement, ChalkStyleMap, styles } from 'chalk';
import escape from './escape';
/**
* Decorate ASCII-colors with shell-specific escapes
*/
let PatchedChalkStyleMap: ChalkStyleMap;
Object.keys(styles).forEach((style: string) => {
PatchedChalkStyleMap[style] = {
close: escape(styles[style].close),
open: escape(styles[style].open),
reset: escape(styles[style].reset),
};
});
Above ich gerade durch alle chalk
Arten gehen und flicken sie mit meiner speziellen escape
Funktion. Dies würde jedoch nicht kompilieren. Ich erhalte diesen Fehler:
src/colors.ts(10,3): error TS7017: Element implicitly has an 'any' type because type 'ChalkStyleMap' has no index signature.
src/colors.ts(11,16): error TS7017: Element implicitly has an 'any' type because type 'ChalkStyleMap' has no index signature.
src/colors.ts(12,15): error TS7017: Element implicitly has an 'any' type because type 'ChalkStyleMap' has no index signature.
src/colors.ts(13,16): error TS7017: Element implicitly has an 'any' type because type 'ChalkStyleMap' has no index signature
Auch
, soll ich sagen, ich habe "noImplicitAny"
Optionen in meinem tsconfig.json
aktiviert.
Wie kann ich Typen hier korrekt beschreiben, ohne implizit any
zu bekommen?
Warum? Ich verwende bereits die Typisierung von Chalk und 'ChalkStyleMap' ist bereits [hier] deklariert (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/chalk/index.d.ts#L93-L124) – denysdovhan
@ denysdovhan Sie deklarieren die 'ChalkStyleMap'-Schnittstelle nicht erneut. Sie erweitern es einfach, um den benötigten Indexer hinzuzufügen. – Saravana