Typescript 原始类型 : any difference between the types "number" and "Number" (is TSC case-insensitive)?

标签 typescript tsc

我想写一个number类型的参数,但我拼错了类型,而是写成Number

在我的 IDE (JetBrains WebStorm) 上,类型 Number 的颜色与用于基本类型 number 的颜色相同,而如果我写一个名称类(已知或未知)它使用不同的颜色,所以我猜它以某种方式将拼写错误的类型识别为正确/几乎正确/某种正确类型。

当我编译代码时,TSC 没有提示编译器找不到名为 Number 的类,而是写了这条错误消息:

Illegal property access

这是否意味着 numberNumber 都作为不同的类型共存?

如果这是真的,那么这些类之间的区别是什么?

如果不是这种情况,那么为什么它只是没有编写它为未知类显示的相同错误消息(“名称‘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, or Object 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, and symbol.

/* 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/

相关文章:

visual-studio - 环境上下文中不允许使用初始化程序

tsc - 将单个 .ts 文件编译为标准输出

javascript - TypeScript 无法解析文件

TypeScript:全局命名空间中的别名命名空间声明

typescript - 如何为 typescript 编译器配置 `baseUrl`?

javascript - 为什么 Typescript 编译器不将 .ts 更改为 .js?

typescript - tsc --watch 在 tsconfig.json 中存在 outDir 时不更新文件

typescript - tsc 似乎没有从 tsconfig.json 中获取 "exclude"选项

reactjs - 带有 withStyles 的 JSX 元素中的通用类型参数

typescript - noImplicitAny 不适用于通用高阶函数