Je voulais écrire un paramètre de type number
, mais j'ai mal orthographié le type, en écrivant à la Number
place.
Sur mon IDE (JetBrains WebStorm), le type Number
est écrit avec la même couleur que celle utilisée pour le type primitif number
, tandis que si j'écris le nom d'une classe (connue ou inconnue), il utilise une couleur différente, donc je suppose qu'il reconnaît d'une manière ou d'une autre le type mal orthographié comme un type correct / presque correct / en quelque sorte correct.
Lorsque je compile le code, au lieu de me plaindre par exemple que le compilateur n'a pas trouvé de classe nommée Number
, TSC écrit ce message d'erreur:
Illegal property access
Est - ce que cela signifie que number
et Number
tant coexiste que différents types?
Si cela est vrai, quelle est la différence entre ces classes?
Si ce n'est pas le cas, alors pourquoi il n'a tout simplement pas écrit le même message d'erreur qu'il affiche pour les classes inconnues ("Le nom 'Number' n'existe pas dans la portée actuelle")
Voici le code:
class Test
{
private myArray:string[] = ["Jack", "Jill", "John", "Joe", "Jeff"];
// THIS WORKS
public getValue(index:number):string
{
return this.myArray[index];
}
// THIS DOESN'T WORK: ILLEGAL PROPERTY ACCESS
public getAnotherValue(index:Number):string
{
return this.myArray[index];
}
}
la source
Pour augmenter la réponse de Ryan avec les conseils des choses à faire et à ne pas faire de TypeScript :
la source
[]
pour désigner les types de tableaux. Il peut y avoir des exceptions, je ne suis pas sûr.Comme le dit le document TypeScript:
var Number: NumberConstructor (value?: any) => number
Comme il dit, prenez
any
comme paramètre et retournez le numéro ounull
Cela donne un moyen facile de vérifier qu'une valeur est un nombre ou non
Number("1234"); // 1234 Number("1234.54") // 1234.54 Number("-1234.54") // -1234.54 Number("1234.54.33") // null Number("any-non-numeric") // null
Nous pouvons donc simplement utiliser pour vérifier le numéro, comme:
if(Number(val)){ console.log('val is a number'); } else { console.log('Not a number'); }
la source