1
votes

VS Code applique des points-virgules, mais les exemples Angular TypeScript ne sont pas utilisés de manière cohérente?

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?


0 commentaires

4 Réponses :


0
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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.


0 commentaires

0
votes

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.

Depuis Insertion de point-virgule JavaScript: tout ce que vous devez savoir

[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.

Où les points-virgules sont-ils facultatifs et où sont-ils obligatoires?

  • 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.

Règle de point-virgule TSLint

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.

Exemple de règles de point-virgule TSLint

npx tslint-to-eslint-config
"semicolon": [true, "always", "ignore-interfaces"]
"semicolon": [true, "always"]

TSLint devenant obsolète en 2019

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.

Utilisation

"semicolon": [true, "never"]

p >


0 commentaires