Eu pretendia escrever um parâmetro do tipo number
, mas escrevi o tipo incorretamente, escrevendo em Number
vez disso.
No meu IDE (JetBrains WebStorm) o tipo Number
é escrito com a mesma cor que é usada para o tipo primitivo number
, enquanto se eu escrever o nome de uma classe (conhecida ou desconhecida) ela usa uma cor diferente, então eu acho que de alguma forma ela reconhece o tipo incorreto como um tipo correto / quase correto / tipo de correto.
Quando eu compilo o código, em vez de reclamar, por exemplo, que o compilador não conseguiu encontrar uma classe chamada Number
, o TSC escreve esta mensagem de erro:
Illegal property access
Isso significa que number
e Number
ambos co-existe como diferentes tipos?
Se isso for verdade, qual é a diferença entre essas classes?
Se este não for o caso, então porque ele simplesmente não escreveu a mesma mensagem de erro que exibe para classes desconhecidas ("O nome 'Número' não existe no escopo atual")
Este é o código:
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];
}
}