2017-09-04 115 views
0

任何人都可以帮助我理解并解决此错误吗?无法将类型'数字'转换为类型'0'

vehicleId = mapping.VehicleId; 

这条线被突出显示为红色,并显示错误

无法将类型 '数字' 键入 '0'

  • vehicleId是键入number
  • 映射。 VehicleId型号为number [但标记为可选]

如这里请求是这些变量/属性定义的确切方式:

在功能块:

let vehicleId = 0; 

在映射(注意,这是通过HTTP请求设定,不在代码中):

VehicleId?: number; 
+1

加入,你声明类型'vehicleId'和'mapping.VehicleId'代码的部分(S),并在那里你分配一个值到'mapping.VehicleId' –

+0

@NitzanTomer谢谢,更新了问题 – Chris

+0

你使用什么版本的打字稿? –

回答

1

在打字稿中,每个数字的值也是一种类型,因此当您编写let vehicleId = 0;它将被输入0类型。那么除了具有相同类型的东西(即0)之外,您不能指定任何内容。这有点令人困惑,但有这方面的用处。尝试:

let vehicleId:number = 0;

let vehicleId = 0 as number; 
+1

*“当你写let1 vehicleId = 0;它将被键入到类型0”* - 这是不正确的,'let vehicleId = 0'总是会创建一个'number'类型的变量,你可以在这个[demo]中验证它(http://www.typescriptlang.org/play/#src=let%20value%20 %3D%200%3B%0D%0Avalue%20%3D%202%3B)。问题是,在某处,'vehicleId'被明确定义为'let vehicleId:0',它不是值'0'的赋值,而是将类型设置为数字文字(在这种情况下,可以是' 0')。这很可能是OP的错字。 –

+0

@JohnWeisz这不是一个错字 - 我仔细检查。 VS说这是一个数字,但只有在将其类型指定为数字后,错误才会消失。 – Chris

+0

@Chris你正在使用什么版本的打字稿? –

相关问题