三个js角:财产'处置'类型'材料|中不存在材料[]'

时间:2018-06-14 16:29:52

标签: angular types three.js

我有一个角度6.0.5运行三。

所有人都在使用三个版本0.89.0和@ types / three版本0.84.3

我已更新为三个版本0.93.0和@ types /三个版本0.92.5

现在一切都破了。我收到以下错误:

Property 'dispose' does not exist on type 'Material | Material[]'.

Property 'dispose' does not exist on type 'Material[]'.

Property 'clippingPlanes' does not exist on type 'Material | 
Material[]'.
Property 'clippingPlanes' does not exist on type 'Material[]'.

Property 'clippingPlanes' does not exist on type 'Material | 
Material[]'.

Property 'clippingPlanes' does not exist on type 'Material[]'.

Argument of type '{ shading: Shading; side: Side; shininess: number; 
color: number; transparent: true; opacity: num...' is not assignable 
to parameter of type 'MeshPhongMaterialParameters'.

Object literal may only specify known properties, and 'shading' does 
not exist in type 'MeshPhongMaterialParameters'.

我的猜测是类型和库不兼容。有人知道如何解决这个烂摊子吗?

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题。这是因为没有多材料,您必须使用材料阵列。如果您查看网格中“材料”的签名,现在是: 材质|材料[] 因此您不能直接将其作为材料访问。我所做的并假设您从未使用过材质数组,则将其强制转换为,例如:

mesh1.material.dispose();  //error since material could be an array
(<any>mesh1.material).dispose();     //OK since it doesn't know what it is

我想一般的解决方案是检查一个数组并分别处理每种情况,但这会使代码很丑陋,所以也许有更好的解决方案。

您的另一个问题是“阴影”已更改为布尔型“ flatShading”。