IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Visual Studio Code 1.65 est disponible et propose une nouvelle expérience dans l'historique de l'éditeur
Ainsi que l'évaluation des variables paresseuses du débogueur

Le , par Stéphane le calme

32PARTAGES

4  0 
Table de travail

Nouvelle navigation dans l'historique de l'éditeur

La fonction de navigation dans l'historique de l'éditeur dans VS Code pilote certaines commandes populaires, telles que Go Back et Go Forward. De nombreuses demandes de fonctionnalités visaient à améliorer cette fonctionnalité et également ajouter plus de fonctionnalités. Cette navigation dans l'historique de l'éditeur a été entièrement réécrite pour répondre à la plupart de ces demandes.

Navigation sensible au groupe d'éditeurs

Les groupes d'éditeurs sont désormais pris en compte lors de la navigation dans l'historique de l'éditeur. Naviguer en avant et en arrière dans l'historique de l'éditeur activera et concentrera les éditeurs exactement dans ces groupes d'éditeurs tels qu'ils étaient. Lorsqu'un groupe d'éditeurs est supprimé, toutes les entrées d'historique associées sont supprimées.

Nouveau paramètre pour étendre la navigation au groupe d'éditeurs ou à l'éditeur

Un nouveau paramètre workbench.editor.navigationScope permet de limiter la navigation dans l'historique de l'éditeur au seul groupe d'éditeurs actif ou même à l'éditeur. Les valeurs prises en charge sont*:
  • default : la navigation dans l'éditeur fonctionne dans tous les groupes d'éditeurs et éditeurs ouverts.
  • editorGroup*: la navigation dans l'éditeur est limitée aux éditeurs ouverts du groupe d'éditeurs actif.
  • editor*: la navigation dans l'éditeur est limitée à l'éditeur actif.

Si vous configurez la portée sur editorGroup ou editor, chaque groupe d'éditeurs ou éditeur aura sa propre pile de navigation qui peut être parcourue individuellement.

Nouvelles commandes pour naviguer dans les emplacements d'édition ou de navigation

Par défaut, les emplacements de navigation de l'éditeur sont ajoutés chaque fois que vous naviguez entre les éditeurs, mais également lorsque vous naviguez dans les éditeurs (par exemple, lorsque vous changez de cellule de notebook ou que vous modifiez la sélection dans les éditeurs de texte). Si vous pensez que trop d'emplacements sont enregistrés, de nouvelles commandes ont été ajoutées qui réduisent les emplacements à*:
  • Emplacements de navigation - Par exemple, lors de l'utilisation de Aller à la définition.
  • Modifier les emplacements - Chaque fois qu'un éditeur est modifié. Par exemple, lors de la saisie dans un éditeur de texte.

Vous pouvez attribuer votre raccourci clavier préféré à ces commandes pour modifier votre navigation en conséquence.

Commandes pour modifier les emplacements*:
  • workbench.action.navigateForwardInEditLocations - Avance dans les emplacements de modification.
  • workbench.action.navigateBackInEditLocations - Revenir en arrière dans les emplacements d'édition.
  • workbench.action.navigatePreviousInEditLocations - Aller précédent dans les emplacements d'édition.
  • workbench.action.navigateToLastEditLocation - Aller au dernier emplacement de modification (cette commande existait déjà auparavant).

Commandes pour les emplacements de navigation*:
  • workbench.action.navigateForwardInNavigationLocations - Avance dans les emplacements de navigation.
  • workbench.action.navigateBackInNavigationLocations - Revenir aux emplacements de navigation.
  • workbench.action.navigatePreviousInNavigationLocations - Aller précédent dans les emplacements de navigation.
  • workbench.action.navigateToLastNavigationLocation' - Aller au dernier emplacement de navigation.

Des clés de contexte associées ont été ajoutées pour rendre l'attribution des raccourcis clavier plus puissante.

Clés de contexte pour modifier les emplacements*:
  • canNavigateBackInEditLocations - Indique s'il est possible de revenir en arrière dans les emplacements d'édition.
  • canNavigateForwardInEditLocations - S'il est possible d'avancer dans les emplacements d'édition.
  • canNavigateToLastEditLocation - Indique s'il est possible d'accéder au dernier emplacement de modification.

Clés de contexte pour les emplacements de navigation*:
  • canNavigateBackInNavigationLocations - S'il est possible de revenir en arrière dans les emplacements de navigation.
  • canNavigateForwardInNavigationLocations - S'il est possible d'avancer dans les emplacements de navigation.
  • canNavigateToLastNavigationLocation - S'il est possible d'aller au dernier emplacement de navigation

Éditeur

Entourer un extrait

Il existe une nouvelle commande pour entourer la sélection actuelle d'un extrait. Sélectionnez du texte, appelez la commande Surround With Snippet dans la palette de commandes (Ctrl + Maj + P) et sélectionnez un extrait dans la liste déroulante.


Tout extrait de code applicable qui utilise les variables TM_SELECTED_TEXT ou SELECTION sera disponible dans la liste déroulante de sélection rapide Surround With Snippet. Des extraits personnalisés d'utilisateur ou de projet sont également inclus.

Conseils d'incrustation accessibles

Les conseils d'incrustation affichent des informations supplémentaires dans le code source, comme le type déduit d'une variable. Pour les utilisateurs de lecteurs d'écran, il existe une nouvelle commande pour aider avec cette fonctionnalité. Sélectionnez Lire la ligne avec des conseils d'incrustation dans la palette de commandes et l'éditeur lira la ligne actuelle entrelacée avec ses conseils.

Mise en évidence contextuelle Unicode

Pour signaler moins de faux positifs, les caractères Unicode ambigus et invisibles ne sont plus mis en surbrillance si les caractères environnants indiquent visuellement un script non ASCII. Ainsi, dans les espaces de travail sécurisés, seuls les caractères invisibles ou pouvant être confondus avec des caractères ASCII sont mis en surbrillance. L'exception à cela concerne les caractères contenus dans un mot de caractères non ASCII, où au moins un caractère ne peut pas être confondu avec un caractère ASCII.

Avant de pouvoir voir plusieurs faux positifs dans la chaîne const*:


Terminal

Avertissement de collage multiligne

Une boîte de dialogue s'affiche désormais par défaut lors du collage de plusieurs lignes dans des terminaux lorsque le shell ne prend pas en charge le multiligne. Cet avertissement s'affiche pour le mode de collage entre crochets et pour PowerShell lorsque nous transmettons Ctrl+V directement au shell. Il y a une case à cocher Ne plus me demander dans la boîte de dialogue pour désactiver facilement la fonctionnalité.

Améliorations des liens sur le terminal

L'implémentation des liens sur le terminal a subi une refactorisation importante dans cette version. Cela a simplifié et amélioré la maintenabilité de la fonctionnalité mais a également apporté :
  • Les mises en surbrillance des liens fonctionnent à nouveau.
  • La mise en cache des liens résolus, réduisant la latence pour que certains liens s'affichent.
  • Les liens Workspace Search sont désormais gérés par le même code que les liens validés, pour plus de cohérence et une meilleure reconnaissance des lignes/colonnes.
  • Plusieurs corrections de bogues.

Débogage

Variables paresseuses

Accéder à la valeur d'une variable peut avoir des effets secondaires ou être coûteux. Le débogueur générique de VS Code peut désormais afficher un bouton permettant à l'utilisateur de récupérer la valeur de la variable à la demande. Ceci est disponible pour les extensions de débogage qui prennent en charge la nouvelle fonctionnalité de variable "paresseuse". Actuellement, cela n'a été implémenté que par le débogueur JavaScript intégré pour les getters de propriété, Microsoft prévoit que d'autres extensions de débogueur suivront bientôt.

Langages

TypeScript 4.6

TypeScript est un langage de programmation libre et open source développé par Microsoft qui a pour but d'améliorer et de sécuriser la production de code JavaScript. Il s'agit d'un surensemble du JavaScript qui apporte un typage statique et optionnel des variables. Il permet de détecter certaines erreurs en amont et se compile en JavaScript pour une utilisation côté navigateur ou côté serveur à l'aide de NodeJS. Notons qu’avec l’utilitaire npm les développeurs JavaScript peuvent partager et réutiliser facilement leur code. Il facilite la mise à jour du code et est distribué avec Node.js. TypeScript présente plusieurs avantages :
  • la prévention des bogues et la maintenabilité du code ;
  • la prise en charge des interfaces, des sous-interfaces, des classes, des sous-classes ;
  • la capacité de programmer en orienté objet avec l’héritage des membres privés et des interfaces.

VS Code est désormais livré avec TypeScript 4.6. Voici, ci-dessous, les nouveautés apportées par la Release Candidate de TypeScript 4.6 :

Autoriser le code dans les constructeurs avant super()

Dans les classes JavaScript, il est obligatoire d'appeler super() avant de s'y référer. TypeScript applique également cette règle, bien qu'il soit un peu trop strict dans sa façon de l'assurer. En TypeScript, c'était auparavant une erreur de contenir du code au début d'un constructeur si sa classe contenante avait des initialisateurs de propriétés.

Code TypeScript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Base { 
    // ... 
} 
  
class Derived extends Base { 
    someProperty = true; 
  
    constructor() { 
        // error! 
        // have to call 'super()' first because it needs to initialize 'someProperty'. 
        doSomeStuff(); 
        super(); 
    } 
}

Cela permettait de vérifier à peu de frais que super() était appelé avant que ceci ne soit référencé, mais cela finit par rejeter beaucoup de code valide. TypeScript 4.6 est maintenant beaucoup plus indulgent dans cette vérification et permet à d'autres codes de s'exécuter avant super(), tout en s'assurant toujours que super() se produit au niveau supérieur avant toute référence à ceci.

Analyse du flux de contrôle pour les Unions Discriminées Destructibles

TypeScript est capable de restreindre les types sur la base de ce que l'on appelle une propriété discriminante. Par exemple, dans l'extrait de code suivant, TypeScript est capable de restreindre le type d'action en fonction de chaque fois que nous vérifions la valeur de kind.

Code TypeScript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type Action = 
    | { kind: "NumberContents", payload: number } 
    | { kind: "StringContents", payload: string }; 
  
function processAction(action: Action) { 
    if (action.kind === "NumberContents") { 
        // `action.payload` is a number here. 
        let num = action.payload * 2 
        // ... 
    } 
    else if (action.kind === "StringContents") { 
        // `action.payload` is a string here. 
        const str = action.payload.trim(); 
        // ... 
    } 
}

Cela permet de travailler avec des objets qui peuvent contenir différentes données, mais un champ commun indique quelles sont les données de ces objets. C'est très courant en TypeScript ; cependant, selon certains préférences, vous auriez pu vouloir déstructurer le type et la charge utile dans l'exemple ci-dessus. Peut-être quelque chose comme ce qui suit :

Code TypeScript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type Action = 
    | { kind: "NumberContents", payload: number } 
    | { kind: "StringContents", payload: string }; 
  
function processAction(action: Action) { 
    const { kind, payload } = action; 
    if (kind === "NumberContents") { 
        let num = payload * 2 
        // ... 
    } 
    else if (kind === "StringContents") { 
        const str = payload.trim(); 
        // ... 
    } 
}

Auparavant, TypeScript se trompait à ce sujet une fois que le type et la charge utile étaient extraits du même objet dans des variables, ils étaient considérés comme totalement indépendants. Lors de la déstructuration de propriétés individuelles dans une déclaration const, ou lors de la déstructuration d'un paramètre dans des variables qui ne sont jamais assignées, TypeScript vérifiera si le type déstructuré est une union discriminée. Si c'est le cas, TypeScript peut maintenant réduire les types de variables en fonction des vérifications d'autres variables. Ainsi, dans notre exemple, une vérification sur le type réduit le type de la charge utile.

Rapport d'erreur de syntaxe dans les fichiers JavaScript

Grâce à TypeScript 4.6, VS Code signale désormais certaines erreurs de syntaxe courantes dans les fichiers JavaScript. Cela inclut les erreurs d'analyse, ainsi que les redéclarations non valides de variables de portée de bloc*:

Plus de paramètres JS/TS peuvent être configurés par langage

Davantage de paramètres JavaScript et TypeScript peuvent désormais être configurés en tant que paramètres spécifiques au langage. Les paramètres spécifiques au langage sont utiles si vous souhaitez des paramètres différents pour javascript vs javascriptreact, par exemple.

Les nouveaux paramètres activés spécifiques au langage incluent*:
  • javascript.preferences.quoteStyle, typescript.preferences.quoteStyle
  • javascript.preferences.importModuleSpecifier, typescript.preferences.importModuleSpecifier
  • javascript.preferences.importModuleSpecifierEnding, typescript.preferences.importModuleSpecifierEnding
  • javascript.preferences.jsxAttributeCompletionStyle, typescript.preferences.jsxAttributeCompletionStyle
  • javascript.preferences.renameShorthandProperties, typescript.preferences.renameShorthandProperties
  • javascript.preferences.useAliasesForRenames, typescript.preferences.useAliasesForRenames
  • javascript.suggest.enabled, typescript.suggest.enabled
  • javascript.suggest.completeJSDocs, typescript.suggest.completeJSDocs
  • javascript.suggest.jsdoc.generateReturns, typescript.suggest.jsdoc.generateReturns
  • javascript.autoClosingTags, typescript.autoClosingTags

Source : Microsoft

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de smarties
Expert confirmé https://www.developpez.com
Le 08/07/2022 à 10:39
Cool mais je continue d'utiliser VSCodium afin de me passer des télémétrie de M$
5  1