我想写一个number
类型的参数,但我拼错了类型,而是写成Number
。
在我的 IDE (JetBrains WebStorm) 上,类型 Number
的颜色与用于基本类型 number
的颜色相同,而如果我写一个名称类(已知或未知)它使用不同的颜色,所以我猜它以某种方式将拼写错误的类型识别为正确/几乎正确/某种正确类型。
当我编译代码时,TSC 没有提示编译器找不到名为 Number
的类,而是写了这条错误消息:
Illegal property access
这是否意味着 number
和 Number
都作为不同的类型共存?
如果这是真的,那么这些类之间的区别是什么?
如果不是这种情况,那么为什么它只是没有编写它为未知类显示的相同错误消息(“名称‘Number’在当前范围内不存在”)
这是代码:
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];
}
}
最佳答案
根据 TypeScript Do's and Don'ts 的指导补充 Ryan 的回答:
Don't ever use the types
Number
,String
,Boolean
,Symbol
, orObject
These types refer to non-primitive boxed objects that are almost never used appropriately in JavaScript code./* WRONG */ function reverse(s: String): String;
Do use the types
number
,string
,boolean
, andsymbol
./* OK */ function reverse(s: string): string;
关于Typescript 原始类型 : any difference between the types "number" and "Number" (is TSC case-insensitive)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487220/