TS: annotation de type dactylographié
- Dans ts, l'annotation de type est un moyen d'ajouter des contraintes à des fonctions ou des variables.
1. Type de base
- booléen, nombre, chaîne
2. Tableau
-
ts peut manipuler des éléments de tableau comme js, et il existe deux façons de définir des nombres.
let list : number[] = [1,2,3]; //or let list : Array<number> = [1,2,3];
3. Tuples
-
Le type de tuple indique que les types du tableau peuvent être différents, mais l'affectation doit être affectée dans l'ordre des types.
let list : [string , number]; x = ['hello', 24]; // true x = [20 , 'hello']; // false
Lors de l'accès aux éléments d'un tuple, faites également attention à l'ordre des types:
console.log(x[0].substr(1)); //true console.log(x[1].substr(1)); //false,number类型没有这个方法
Lors de l'accès à un élément transfrontalier, le type d'union est utilisé à la place, mais vous ne pouvez pas essayer d'attribuer des valeurs autres que le type existant:
x[3] = 'world'; // ok,string is allowed x[3] = true; // false,boolean不在这个元组内
4. Énumération
-
Le type enum est un complément à js. L'énumération peut être utilisée pour donner un nom à un groupe de valeurs. En règle générale, une énumération commence à 0 et attribue des valeurs. Vous pouvez attribuer manuellement des valeurs à partir d'autres nombres, ou vous pouvez affecter toutes les valeurs manuellement.
enum Color { red,green,blue}; // 从0开始 let r : Color = Color.red; enum Color { red = 1,green,blue}; // 从1开始 enum Color { red = 1,green = 4,blue = 2};
Il existe également un parcours de l'énumération, et le nom correspondant peut être trouvé par la valeur de l'énumération.
enum Color { red,green,blue}; let colorname : string = Color[0]; console.log(colorname); // 'red'
5. Quelconque
-
Any peut être utilisé pour marquer certaines variables qui n'ont pas encore été déterminées.
let notsure : any[] = [1,'hello',true];
La différence avec Object: les variables de type Object vous permettent uniquement de leur attribuer des valeurs, mais vous ne pouvez pas appeler des méthodes du type correspondant.
let notsure : any = 1; notsure.toFixed(); //ok let notsure : Object = 1; notsure.toFixed(); //error,property 'toFixed' does not exist.
6. nul
-
Void est l'opposé de any, ce qui signifie qu'il n'y a pas de type. Il est souvent utilisé dans les fonctions qui renvoient void.
function warning() : void { console.log('warning!'); }
7. null 和 indéfini
- Par défaut,
null
sommeundefined
est un sous-type de tous les types. Que vous pouveznull
etundefined
assigné ànumber
une variable de type.
8. jamais
-
Quelles valeurs n'existeront jamais, par exemple, représentent une
never
variable pourrait être; type est une fonction du type qui lève toujours une exception ou aucunnever
type de valeur de retour , quand elles ne sont jamais commetrue
lorsque le type de protection s'applique.never
Un type est un sous-type de n'importe quel type et peut être attribué à n'importe quel type; cependant, aucun type n'estnever
un sous-type ou ne peut être attribué à unnever
type (sauf pournever
lui-même). Même siany
aucun des deux ne peut être attribuénever
.// 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 推断的返回值类型为never function fail() { return error("Something failed"); } // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }
9. Type d'objet
-
Le type d'objet représente un type non primitif, qui est un type autre que les types ci-dessus. L'utilisation de ce type peut mieux représenter une API telle que Object.create.
declare function create(o: object | null): void; create({ prop: 0 }); // OK create(null); // OK create(42); // Error create("string"); // Error create(false); // Error create(undefined); // Error
10. Assertion de type
-
L'assertion de type est similaire à la conversion de type, mais sans vérification ni déconstruction de données spéciales.
let someValue: any = "this is a string"; let strLength: number = (<string>someValue).length; // or let someValue: any = "this is a string"; let strLength: number = (someValue as string).length;