Chciałem napisać parametr typu number
, ale błędnie napisałem typ, pisząc Number
zamiast tego.
Na moim IDE (JetBrains WebStorm) typ Number
jest zapisany tym samym kolorem, który jest używany dla typu pierwotnego number
, natomiast jeśli napiszę nazwę klasy (znanej lub nieznanej), używa innego koloru, więc domyślam się, że jakoś rozpoznaje błędnie napisany typ jako poprawny / prawie poprawny / rodzaj-poprawny.
Kiedy kompiluję kod, zamiast narzekać na przykład, że kompilator nie mógł znaleźć klasy o nazwie Number
, TSC zapisuje następujący komunikat o błędzie:
Illegal property access
Czy to oznacza, że number
i Number
oba współistnieją jako różne typy?
Jeśli to prawda, jaka jest różnica między tymi klasami?
Jeśli tak nie jest, to dlaczego po prostu nie napisał tego samego komunikatu o błędzie, który wyświetla dla nieznanych klas („Nazwa„ Numer ”nie istnieje w bieżącym zakresie”)
To jest kod:
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];
}
}