Question

I am new to TypeScript. I am creating an Away3D scene, that dynamically creates a canvas element. I would like to append that element to a container.

The code works, but I get the following compiling errors:

error TS2082: Supplied parameters do not match any signature of all target: Type 'examples.MinimalScene' is missing property 'nodeType' from type 'Node'.

and

error TS2087: Could not select overload for 'call' expression.

I know it is in my onload function at the bottom trying to set a variable to the new function call.

I just don't know where to put the property 'nodeType' ??

Any help would be very appreciated.

Here is my code:

module examples
{
    export class MinimalScene
    {
        private _view:away.containers.View = new away.containers.View(new away.render.DefaultRenderer());
        private _cubeGeometry:away.primitives.CubeGeometry = new away.primitives.CubeGeometry(250, 250, 250);
        private _cubeMesh:away.entities.Mesh = new away.entities.Mesh(this._cubeGeometry); 

        constructor(private away3DContainer)
        {
            this._view.width = this.away3DContainer.offsetWidth;
            this._view.height = this.away3DContainer.offsetHeight;
            this._view.scene.addChild(this._cubeMesh);
            this._view.render();
        }
    }
}

window.onload = function ()
{
    var awayContainer = document.getElementById('away3DContainer');
    var awayCanvas = new examples.MinimalScene(awayContainer);
    awayContainer.appendChild(awayCanvas);
}
Was it helpful?

Solution

Assuming the error is in the following line :

var awayContainer = document.getElementById('away3DContainer');
var awayCanvas = new examples.MinimalScene(awayContainer);
awayContainer.appendChild(awayCanvas); // Error here

It is because the type MinimalScene is not compatible with Node which is the expected for appendChild

Quick fix : use any:

var awayContainer = document.getElementById('away3DContainer');
var awayCanvas:any = new examples.MinimalScene(awayContainer); // Quick fix
awayContainer.appendChild(awayCanvas); // no Error

It will fix the compile error, but I suspect that your appendChild is wrong.

OTHER TIPS

Although, Basarat's response did solve the error being thrown, it did not work as a perfect solution. As he guessed, my appendChild WAS wrong. To help anyone else with a similar case, I ended up using the following code.

var awayContainer = document.getElementById('away3DContainer');
var away3dObject:any = new examples.Template(awayContainer);
var awayCanvas = document.getElementsByTagName('canvas')[(document.body.getElementsByTagName('canvas').length-1)];    
awayContainer.appendChild(awayCanvas);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top