6

我将一个变量声明x

public x : 0;

而不是将其初始化为0

认为我已经正确地声明了它,我将它初始化为

this.x = 5;

我在上面的行中遇到错误,内容为

Type '5' is not assignable to type '0'.ts(2322)

谁能告诉我,为什么会这样?

4

1 回答 1

6

这是 Typescript 的一个特性,在: 声明了可能的类型之后,它也可以是特定的值。

例如,您还可以将变量限制为特定字符串:

var action : "email" | "sms";

在这种情况下action = "fax"会给出编译错误。

对于字符串,这称为“字符串文字类型”。对于数字,这称为“数字文字类型”。

因此,在您的情况下,您将其声明为具有0允许值的数字文字类型。

另请参阅https://www.typescriptlang.org/docs/handbook/advanced-types.html#string-literal-typeshttps://www.typescriptlang.org/docs/handbook/advanced-types.html#numeric-文字类型

所以要小心混合=:打字稿,因为在这种情况下两者都是正确的打字稿,但有不同的行为;)

于 2019-08-10T11:05:52.507 回答