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`