TypeScript 中的“数字”和“数字”有什么区别?

2024-02-16

在 TypeScript 中,有两种不同的“数字”类型。第一个叫做小写number,第二个是大写的Number。如果您尝试打印number,出现编译错误:

console.log(number); //-> error TS2693: 'number' only refers to a type

另一方面,印刷Number将给出标准功能说明:

console.log(Number); //-> [Function: Number]

这并不奇怪,因为Number只是记录的内置 JS 构造函数here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number。然而,目前尚不清楚,什么number应该是。

从错误信息来看,似乎number实际上不是一个离散值(?!)Number。但尽管如此,它还是在变量和函数声明中使用,就像它是一个值一样,例如:

var two: number = 2;
function sqr(x: number) { return x; }

另一方面,用户定义的类型(例如类)似乎是离散值(因为它们还打印标准函数描述)。而且,让事情变得更加复杂的是,Number可以在类似的注释中使用number:

var two: Number = 2;

还有类似的案例string and String, any and Object, etc.

所以,我的问题是:什么是number, stringTypeScript 中的 等,它们与内置构造函数有何不同?


number只是一个 TypeScript 的东西 - 它是一个原始类型,指的是数字。

但是,从错误消息来看,数字实际上并不是像 Number 这样的离散值。

事实上 - 它是一种类型,因此它不存在于发出的代码中。

离散值,例如 Number。另一方面,用户定义的类型(例如类)似乎是离散值(因为它们还打印标准函数描述)。

是的。 Number 为一的类是特殊的。他们做了两件事,但有些不直观:

  • 他们创建一个 JavaScript 类(可在发出的代码中使用)
  • 他们还为类创建一个接口(仅由 TypeScript 使用)

如果你使用Number在一个地方type不出所料,TypeScript 不会抱怨,因为Number是一个接口。

如果你使用Number在一个地方value(发出的代码中存在的东西)是预期的,TypeScript 不会抱怨,因为Number也是一个全局构造函数。

换句话说,两人Number下面请参考完全不同的东西:

// refer to the TypeScript Number interface
let foo: Number;

// refer to the JavaScript global.Number constructor
const someNum = Number(someString);

在 TypeScript 中使用 Number 非常奇怪,因为严格来说,它指的是通过创建的数字new:

const theNum = new Number(6);

几乎没有理由这样做。请改用普通的原始数字,而不使用对象包装器。

const theNum = 6;
// theNum is typed as `number`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript 中的“数字”和“数字”有什么区别? 的相关文章

随机推荐

  • Microsoft Owin Facebook 身份验证在 MVC 应用程序中不起作用

    我正在 Asp Net MVC 应用程序中工作 我正在使用默认的 Visual Studio 项目模板 Google 身份验证工作正常 但 facebook 不行 我指定了在我的 Facebook 开发者门户上生成的有效 appId 和 a
  • NEON 向量化无符号字节的乘积之和: (a[i]-int1) * (b[i]-int2)

    我需要改进循环 因为我的应用程序调用了数千次 我想我需要用 Neon 来做这件事 但我不知道从哪里开始 假设 先决条件 w始终为 320 16 32 的倍数 pa and pb16 字节对齐 ma and mb是积极的 int whileI
  • QtCreator语义问题警告代码永远不会被执行

    我有以下大块Qt code if this gt ueCommunicationsSocket gt bind QHostAddress data 0 toString static cast
  • Xcode 4.2。运行时卡住“正在附加到我的应用程序”

    在 xcode 4 2 中 有时当您要在模拟器上运行 ios proj 时 状态窗口会显示 正在附加到 myapp 并且会卡在那里 直到您取消 现在 之前已经有人问过这个问题 XCode 4 在 附加到 应用程序名称 处挂起 https s
  • “实时”更新 Qt TextView

    我有一个带有嵌入式脚本 jit 的 Qt 应用程序 现在我想接收 QTextEdit 上脚本的输出 更具体的是 QPlainTextEdit 为此目的 正在发出回调 我面临的问题是 无论我尝试什么 文本编辑的输出要么延迟到脚本完成 要么在
  • 搜索和替换--.sub(replacement, string[ count=0]) - 不适用于特殊字符

    我正在学习 Python 和 Regex 并做了一些简单的练习 这里我有一个字符串 我想用 html 代码替换特殊字符 代码如下 str nAxes hist tPlot a histogram nAxes hist2d tMake a 2
  • 对列表进行排序

    使用 C 对列表进行数字排序的最佳方法是什么 我的列表有项目 5 7 3 我希望它们按 3 5 7 排序 我知道一些更长的方法 但我想 linq 有更快的方法吗 抱歉 今天已经结束了 我的心思在其他地方 第一次没有看到它改变 这里不需要LI
  • 使用 Flask-Admin 自定义列表视图

    我有一个简单的模型调用 我正在使用 Flask Admin 来创建 编辑 删除该模型的实例 Call 的字段之一是音频文件的路径 我希望能够通过添加一些 html 代码来在管理中播放该文件 我检查了模板flask admin templat
  • “git add *”和“git add -f *”之间的区别?

    当我使用git add 它会跳过一些文件和文件夹 但同样的命令git add 对于其他一些项目来说效果很好 但是当我使用时git add f 工作正常 好的 这是来自 Git 参考手册 refhttps git scm com docs g
  • 关于字符串操作的基本 Python 问题:示例:string.lowercase

    所以我尝试运行它 但它出错了 我需要帮助了解问题所在 我真的很感谢任何帮助 我正在学习麻省理工学院的开放课程编程简介 words GreatTimes words lowercase 我收到此错误 AttributeError str ob
  • 从 matplotlib 图检索 XY 数据 [重复]

    这个问题在这里已经有答案了 我正在用 wxPython 编写一个小应用程序 它有一个 matplotlib 图 使用 wxagg 后端 面板 我想添加用户将图中当前绘制的 X Y 数据导出到文本文件的功能 有没有一种非侵入性的方法来做到这一
  • 包括 xs:restriction(s) 作为 moxy 生成的 java 类中的注释

    我有一些新的xsd schema我需要为其生成相应的java类的版本更新 在过去 我知道类总是使用 EclipseLink 的 Moxy JAXB 实现生成 并且我可以看到模式是否包含
  • 使用 HHVM (HipHop) 运行 phpunit 测试

    我正在尝试通过 HHVM 在虚拟 Ubuntu 12 04 64 位服务器 安装上运行 PHPUnit 单元测试 测试通常使用位于我的测试目录中的 phpunit xml 文件运行 其中包括一个用于处理自动加载的引导文件 并且测试在普通的
  • 在谷歌脚本中添加带有复选框的行

    我正在为 Excel 工作表编写一个小型 Google 脚本 该脚本在 POST 请求上附加一行 根据 POST 参数 我要么将该行附加到末尾 要么将其插入行之间 其中一列实际上是一个布尔值 我试图将其表示为复选框 问题是当我尝试追加一行时
  • 不能重载函数

    所以我有一个模板化类 当我有特定类型 例如 char 时 我想重载函数的行为 对于所有其他类型 让他们做自己的事情 但是 C 不允许我重载该函数 为什么我不能重载这个函数 我真的真的不想要进行模板专业化 因为这样我就复制了整个类 这是一个演
  • 如何生成[0,1]范围内的随机双数? [复制]

    这个问题在这里已经有答案了 以下代码生成 0 1 范围内的双精度数 这意味着 1 不包括在内 var random new Random random NextDouble 我正在寻找一些智能方法来生成 0 1 范围内的随机双数 这意味着
  • MongoDB:导出不同的列值

    任何人都知道如何使用 mongodb 导出不同的列值蒙戈出口公司命令 Command db coll distinct uid 我尝试过的解决方案是 mongoexport csv d db c collection q distinct
  • 如何在 jQuery UI 小部件中决定 _init 和 _create ?

    我想我理解之间的区别 create and init在小部件定义中 例如 参见这个问题 https stackoverflow com questions 3982870 jquery widget create or init 但我仍然不
  • 组合 data.table 中的一组条件以使用二分搜索提取值

    自从我对我的可怕执行和解释上一个问题 https stackoverflow com questions 12669399 extract value from one dataframe and place into other base
  • TypeScript 中的“数字”和“数字”有什么区别?

    在 TypeScript 中 有两种不同的 数字 类型 第一个叫做小写number 第二个是大写的Number 如果您尝试打印number 出现编译错误 console log number gt error TS2693 number o