TypeScript
TSLint - Assurer la qualité et la cohérence du code
Recherche…
Introduction
TSLint effectue une analyse statique du code et détecte les erreurs et les problèmes potentiels dans le code.
Configuration de base de tslint.json
Ceci est une configuration de base de tslint.json
qui
- empêche l'utilisation de
any
- nécessite des accolades pour les instructions
if
/else
/for
/do
/while
- exige que les guillemets (
"
) soient utilisés pour les chaînes
{
"rules": {
"no-any": true,
"curly": true,
"quotemark": [true, "double"]
}
}
Configuration pour moins d'erreurs de programmation
Cet exemple tslint.json contient un ensemble de configuration pour appliquer davantage de typages, intercepter des erreurs communes ou des constructions déroutantes susceptibles de générer des bogues et de suivre davantage les directives de codage pour les contributeurs TypeScript .
Pour appliquer ces règles, incluez tslint dans votre processus de génération et vérifiez votre code avant de le compiler avec tsc.
{
"rules": {
// TypeScript Specific
"member-access": true, // Requires explicit visibility declarations for class members.
"no-any": true, // Diallows usages of any as a type declaration.
// Functionality
"label-position": true, // Only allows labels in sensible locations.
"no-bitwise": true, // Disallows bitwise operators.
"no-eval": true, // Disallows eval function invocations.
"no-null-keyword": true, // Disallows use of the null keyword literal.
"no-unsafe-finally": true, // Disallows control flow statements, such as return, continue, break and throws in finally blocks.
"no-var-keyword": true, // Disallows usage of the var keyword.
"radix": true, // Requires the radix parameter to be specified when calling parseInt.
"triple-equals": true, // Requires === and !== in place of == and !=.
"use-isnan": true, // Enforces use of the isNaN() function to check for NaN references instead of a comparison to the NaN constant.
// Style
"class-name": true, // Enforces PascalCased class and interface names.
"interface-name": [ true, "never-prefix" ], // Requires interface names to begin with a capital ‘I’
"no-angle-bracket-type-assertion": true, // Requires the use of as Type for type assertions instead of <Type>.
"one-variable-per-declaration": true, // Disallows multiple variable definitions in the same declaration statement.
"quotemark": [ true, "double", "avoid-escape" ], // Requires double quotes for string literals.
"semicolon": [ true, "always" ], // Enforces consistent semicolon usage at the end of every statement.
"variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore"] // Checks variable names for various errors. Disallows the use of certain TypeScript keywords (any, Number, number, String, string, Boolean, boolean, undefined) as variable or parameter. Allows only camelCased or UPPER_CASED variable names. Allows underscores at the beginning (only has an effect if “check-format” specified).
}
}
Utiliser un ensemble de règles prédéfini par défaut
tslint
peut étendre un ensemble de règles existant et est livré avec les valeurs tslint:recommended
défaut tslint:recommended
et tslint:latest
.
tslint:recommended
est un ensemble de règles stable, quelque peu motivé, que nous encourageons pour la programmation TypeScript générale. Cette configuration suit un demi-cycle, de sorte qu’elle n’aura pas de changements de rupture entre les versions mineures ou les correctifs.
tslint:latest
extension est tslint: recommandée et est continuellement mise à jour pour inclure la configuration des dernières règles dans chaque version de TSLint. L'utilisation de cette configuration peut entraîner des changements de rupture dans des versions mineures, car de nouvelles règles sont activées, ce qui entraîne des défaillances de peluches dans votre code. Lorsque TSLint atteint un bump de version majeur, tslint: la version recommandée sera mise à jour pour être identique à tslint: latest.
Docs et code source du jeu de règles prédéfini
On peut donc simplement utiliser:
{
"extends": "tslint:recommended"
}
d'avoir une configuration de départ raisonnable.
On peut alors écraser les règles à partir de ce préréglage via des rules
, par exemple pour les développeurs de noeuds, il était logique de définir no-console
sur false
:
{
"extends": "tslint:recommended",
"rules": {
"no-console": false
}
}
Installation et configuration
Pour installer la commande tslint run
npm install -g tslint
Tslint est configuré via le fichier tslint.json
. Pour initialiser la commande d'exécution de la configuration par défaut
tslint --init
Pour vérifier le fichier pour les erreurs possibles dans la commande d'exécution de fichier
tslint filename.ts
Ensembles de règles TSLint
Yeoman Genearator supporte tous ces presets et peut être étendu aussi: