Pourquoi dois-je pirater la définition du type de material: Material | Material[];
à material: Material;
pour corriger l'erreur détaillée ci-dessous? TypeScript suppose que le paramètre material
est de type Material[]
même si je l'ai explicitement défini sur Matériau. Est-ce que je manque quelque chose?Pourquoi mon paramètre est supposé être d'un type alors qu'il en est un autre?
Tapuscrit/ThreeJS Erreur:
this.obj3D.traverse((child) => {
if (child instanceof THREE.Mesh) {
// Error in line below:
// Property 'shading' does not exist on type 'Material | Material
child.material.shading = THREE.SmoothShading;
child.material.side = THREE.DoubleSide;
child.scale.set(this.scale, this.scale, this.scale);
child.castShadow = this.castShadow;
child.receiveShadow = true;
child.material.needsUpdate = true;
}
});
ThreeJS Type Définition:
export class Mesh extends Object3D {
constructor(geometry?: Geometry, material?: Material | Material[]);
constructor(geometry?: BufferGeometry, material?: Material | Material[]);
geometry: Geometry | BufferGeometry;
material: Material | Material[]; // Had to delete *| Material[]* to fix
drawMode: TrianglesDrawModes;
setDrawMode(drawMode: TrianglesDrawModes): void;
updateMorphTargets(): void;
getMorphTargetIndexByName(name: string): number;
raycast(raycaster: Raycaster, intersects: any): void;
}
Veuillez lire [Pourquoi ne pas télécharger des images de code sur SO lorsque vous posez une question?] (Https://meta.stackoverflow.com/questions/285551/why-not-upload-images-of-code-on-so -when-ask-a-question) – Rabbid76
Merci de nous avoir signalé @ Rabbid76. J'ai mis à jour la question et remplacé les images avec le code réel. –