J'ai un module qui corrige chalk
couleurs pour mes besoins spécifiques. Voici le code:Comment patcher des objets dans 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),
};
});
Au-dessus je marche seulement à travers tous les styles chalk
et les patcher avec ma fonction spéciale escape
. Cependant, cela ne compilerait pas. Je reçois ces erreurs:
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
Aussi, je dois dire que j'ai "noImplicitAny"
options activées dans mon tsconfig.json
.
Comment est-ce que je peux décrire les types ici correctement, sans obtenir implicite any
?
Pourquoi? J'utilise déjà les typages de craie et 'ChalkStyleMap' est déjà déclaré [ici] (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/chalk/index.d.ts#L93-L124) – denysdovhan
@ denysdovhan Vous ne déclarez pas l'interface 'ChalkStyleMap'. Vous l'augmentez simplement pour ajouter l'indexeur dont vous avez besoin. – Saravana