Ajouter un commentaire

Hegel : un vérificateur de type pour JavaScript

Par:
admin

mer, 27/05/2020 - 15:08

Hegel est un vérificateur de type pour JavaScript avec des annotations de type facultatives. Hegel a pour but de prévenir les erreurs de types à l'exécution.

Ces concepteurs soulignent que Hegel possède un système de type solide et procure des contrôles fiables. Concrètement, cela signifie qu'il trouve toute TypeError qui pourrait être levée lors de l'exécution. De plus Hegel a une inférence de type de haut niveau qui vous permet de supprimer les annotations de type.

Les concepteurs de Hegel soulignent que celui-ci présentent des avantages par rapport à TypeScript. TypeScript ne garantira jamais que vous n'aurez pas d'erreur de type au moment de l'exécution, tandis qu'avec Hegel nous essayons de mettre en œuvre un système de type solide et solide qui garantira la validité de votre programme, précisent-ils.

Par exemple :

const numbers: Array<number> = [];

// HegelError: Type "Array<number>" is incompatible with type "Array<number | string>"
const numbersOrStrings: Array<string | number> = numbers;

numbersOrStrings[1] = "Hello, TypeError!";


// HegelError: Property "toFixed" does not exist in "Number | undefined"
numbers[1].toFixed(1);

Ce code compile sans erreur avec TypeScript 3.8.3, mais il provoquera 2 erreurs de type à l'exécution

L'exemple ci-dessous montre que Hegel permet de se dispenser de moult annotations de type :

const promisify = fn => arg => Promise.resolve(fn(arg));

const id = promisify(x => x);

// And "upperStr" will be inferred as "Promise<string>"
const upperStr = id("It will be inferred").then(str => str.toUpperCase());

Le même code compilé avec TypeScript 3.8.3 provoquera deux erreurs et inférera upperStr comme étant de type Promise<any>

Hegel dispose d'un site dédié qui permet de l'essayer en ligne.

Hegel est un logiciel libre sous licence MIT, disponible sur GitHub.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 M   M  PPPP    GGG   EEEE  ZZZZZ 
MM MM P P G E Z
M M M PPPP G GG EEE Z
M M P G G E Z
M M P GGG EEEE ZZZZZ