Daniel Rosenwasser de Microsoft a annoncé la version bêta du TypeScript 2.0, qui apporte son lot de nouvelles fonctionnalités au langage, y compris les types non-nullable, l'analyse des flux de contrôle pour les types et les unions discriminées.
Rosenwasser précise que les types non-nullable visent à résoudre la source de bugs la plus courante en JavaScript : null
et undefined
. Les types non-nullable interdisent l'attribution de la valeur null
à une variable, sauf si elle est déclarée comme un type d'option :
let foo1: string = null; // Error!
let foo2: string | null = null; // Type optionnel
Comme indiqué ci-dessus, les types d'option sont déclarés comme des types d'union, une autre nouvelle fonctionnalité de TypeScript 2.0. Les paramètres et les propriétés d'option appartiennent automatiquement aux types d'option. Les types d'options peuvent être utilisés via l'opérateur !
ou par des gardes de type :
let s: string | undefined = "string"; // Okay
if (s) {
f(s);
}
let upperCase = s!.toUpperCase(); // Okay
let lowerCase = foo2.toLowerCase(); // Error
Les types non-nullable
sont activés en TypeScript 2.0 en utilisant le paramètre --strictNullChecks
.
TypeScript 2.0 introduit également une analyse de type à base de flux de contrôle pour les variables et les paramètres locaux. Cela représente une amélioration majeure par rapport à l'analyse de type de TypeScript et étend l'analyse de type pré 2.0 en incluant les effets des affectations et des constructions de contrôle de flux, par exemple return
, break
, etc.
Les constructeurs privés et protégés sont également une nouveauté de TypeScript 2.0. Ils peuvent être déclarés en utilisant les mots - clés private
et protected
. En outre, les propriétés peuvent maintenant être abstraites, ce qui oblige les sous-classes à fournir une définition pour leurs accesseurs :
abstract class A {
abstract p;
}
class B extends A {
get p() {...}
set p(v) {...}
}
Outre les types null
et undefined
mentionnés ci-dessus, TypeScript 2.0 introduit également un nouveau type never
, qui représente le type d'une valeur qui ne se produit jamais, comme une fonction qui ne retourne jamais ou une variable dans une condition de garde qui ne peut jamais être vraie :
// Function returning never must have unreachable end point
function error(message: string): never {
throw new Error(message);
}
Il y a plus de nouvelles fonctionnalités dans TypeScript 2.0, telles que les propriétés en lecture seule et la signature d'index, la spécification du type de l'argument implicite this
des fonctions, l'amélioration de la résolution du module et beaucoup d'autres.
Pour installer TypeScript 2.0 beta, vous pouvez le télécharger pour Visual Studio 2015 (ce qui nécessitera VS 2015 Update 3). Ou bien vous pouvez exécuter npm install -g typescript@beta
.