Je suis actuellement le cours Microsoft Angular Fundamentals et j'ai remarqué un manque de points-virgules dans leurs exemples, quelque chose comme:
gitSearch = (query: string): Promise<GitSearch> => { let promise = new Promise<GitSearch>((resolve, reject) => { if (this.cachedValues[query]) { resolve(this.cachedValues[query]) } else { this.http.get('https://api.github.com/search/repositories?q=' + query) .toPromise() .then( (response) => { resolve(response as GitSearch) }, (error) => { reject(error); }) } }) return promise; }
Notez qu'ils n'utilisent pas de points-virgules après résoudre .thisCachedValues [requête])
. Mais VS Code me donne un avertissement TSLint 'Point-virgule manquant'
à cette ligne. Est-ce un problème si j'omets le point-virgule?
4 Réponses :
Vous pouvez simplement désactiver tslint en utilisant
tslint: disable * / - Désactive toutes les règles pour le reste du fichier
peut également désactiver une règle particulière de tslint ..
/ * tslint: enable: rule1 rule2 rule3 ... * / - Activer les règles répertoriées pour le reste du fichier
Oui, cela fait une différence. Typescript est une extension de Javascript et il a hérité de certaines de ses propriétés. Jetez un œil à l'exemple ci-dessous:
Considérez le conséquences de l'insertion de points-virgules sur l'instruction de retour. Si une déclaration de retour renvoie une valeur, cette expression de valeur doit commencer sur la même ligne que le retour:
return { status: true };
Cela semble renvoyer un objet contenant un membre de statut. Malheureusement, l'insertion de points-virgules le transforme en une instruction qui renvoie undefined . Il n'y a pas d'avertissement cette insertion de point-virgule a provoqué une mauvaise interprétation du programme. Le problème peut être évité si le {est placé à la fin de la ligne précédente et non au début de la ligne suivante:
return { status: true };
Donc, assurez-vous que les points-virgules sont présents à droite place (surtout lorsqu'une ligne se termine par javascript). J'espère que cela vous donnera une idée des pièges potentiels si vous mettez / ne mettez pas correctement le point-virgule.
J'ai pris cet exemple de JavaScript: The Good parts qui est vraiment un livre mince de 172 pages mais génial sur ce genre de choses
Le point-virgule n'est pas requis par JavaScript ou Typescript, mais il est considéré comme une bonne pratique par certains développeurs car il rend le code plus lisible. Vous pouvez désactiver la règle du point-virgule en modifiant la règle:
"semicolon": [true, "never"]
Pour plus d'informations sur la règle https://palantir.github.io/tslint/rules/semicolon/
Est-ce un problème si j'omets le point-virgule?
Ce n'est pas un problème si vous omettez le point-virgule.
JavaScript possède une fonctionnalité syntaxique appelée insertion de point-virgule . Étant donné que Typescript est un sur-ensemble strict de JavaScript, l ' insertion de points-virgules s'applique également à Typescript. Cela signifie que dans la plupart des cas, les points-virgules ne sont pas obligatoires . Les exceptions sont détaillées ci-dessous.
[L] a prose de spécification [ECMAScript] donne ensuite des règles qui décrivent en quoi l'analyse réelle diffère de la grammaire formelle. Celles-ci sont décrites comme si des points-virgules étaient insérés dans le flux de jetons lors de l'analyse, bien que ce ne soit qu'une commodité de spécification; dans la pratique, les analyseurs n'ont pas besoin de générer de faux jetons de point-virgule, mais peuvent à la place considérer les points-virgules comme facultatifs à des endroits spécifiques de la grammaire (pour un exemple, voir cette grammaire d'expression parseur pour ECMAScript , en particulier les règles Statement, EOS, EOSnoLB et SnoLB). Là où la spécification indique qu'un point-virgule est inséré, cela signifie simplement que l'instruction en cours d'analyse est terminée.
- Premièrement, un point-virgule n'est facultatif que s'il y a un saut de ligne, une accolade fermante ou la fin du programme.
- Les points-virgules ne sont pas facultatifs entre les instructions apparaissant sur la même ligne.
- Un point-virgule n'est pas implicite à la fin d'une ligne si le premier jeton de la ligne suivante peut être analysé dans le cadre de la même instruction.
TSLint (utilisé par VS Code) prend en charge une règle de point-virgule . Dans tslint.json
, les règles de point-virgule peuvent être configurées comme:
- "
always
" applique des points-virgules à la fin de chaque instruction.- "
jamais
" n'autorise pas les points-virgules à la fin de chaque instruction, sauf lorsqu'ils sont nécessaires.
npx tslint-to-eslint-config
"semicolon": [true, "always", "ignore-interfaces"]
"semicolon": [true, "always"]
TSLint sera obsolète en 2019 et migré vers ESLint, qui sera le linter standard pour TypeScript et JavaScript.
L'outil tslint-to-eslint-config
permet de convertir les configurations TSLint en équivalent ESLint.
"semicolon": [true, "never"]
p >