J'ai récemment trouvé un bout de code typecript dans un projet angulaire plus important, qui contenait un symbole Bitwise-OR/Pipe-Symbol dans sa déclaration d'objet. Comme ceci :
dataSource: FileSource | null;
D'après moi, il s'agit d'un objet de type FileSource qui est aussi nullable .
dataSource = null; // Works
dataSource = new FileSource... // Works
dataSource = 32; // Error
J'ai également découvert que l'on peut déclarer un objet avec une balise ensemble complet de types de données comme ça :
myVariable: number | string | null;
J'en viens maintenant à ma vraie question : Je peux aussi bien déclarer un objet avec un point d'interrogation comme symbole pour nullable. Y a-t-il une différence entre ces deux déclarations ?
myVariable: FileSource | null;
mySecondVariable?: FileSource;
S'il n'y a pas de différence entre les deux, considérez-vous qu'il s'agit d'une mauvaise pratique, car elle n'est pas courante dans d'autres langages et ne constitue pas un code javascript valide ?
BTW : En Javascript, ceci :
myVariable: Number | null;
myVariable = "Hello World";
serait bien.
Je me concentre sur la nullité d'un objet et sur les différences entre ces déclarations.