Ich wollte einen Parameter vom Typ schreiben number, aber ich habe den Typ falsch geschrieben und Numberstattdessen geschrieben.
In meiner IDE (JetBrains WebStorm) wird der Typ Numbermit derselben Farbe geschrieben, die für den primitiven Typ verwendet numberwird. 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 numberund Numberbeide 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];
}
}