Ich wollte einen Parameter vom Typ schreiben number
, aber ich habe den Typ falsch geschrieben und Number
stattdessen geschrieben.
In meiner IDE (JetBrains WebStorm) wird der Typ Number
mit derselben Farbe geschrieben, die für den primitiven Typ verwendet number
wird. Wenn ich einen Namen einer Klasse (bekannt oder unbekannt) schreibe, wird eine andere Farbe verwendet, sodass ich denke, dass er irgendwie erkannt wird Der falsch geschriebene Typ ist ein korrekter / fast korrekter / irgendwie korrekter Typ.
Wenn ich den Code kompiliere Number
, schreibt TSC diese Fehlermeldung , anstatt sich beispielsweise zu beschweren, dass der Compiler keine Klasse mit dem Namen gefunden hat :
Illegal property access
Heißt das , dass number
und Number
beide koexistiert als verschiedene Typen?
Wenn dies wahr ist, was ist der Unterschied zwischen diesen Klassen?
Wenn dies nicht der Fall ist, warum wurde dann nicht dieselbe Fehlermeldung geschrieben, die für unbekannte Klassen angezeigt wird ("Der Name 'Nummer' existiert im aktuellen Bereich nicht")
Dies ist der 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];
}
}