¿Cómo se usan las classs anónimas de Kotlin como arguments para las funciones nativas de JavaScript?

Estoy configurando la capa de interoperabilidad para esta class ThreeJS y el constructor de la class toma un object que se usa para establecer las properties.

//PointCloudMaterial.js THREE.PointCloudMaterial = function ( parameters ) { THREE.Material.call( this ); this.color = new THREE.Color( 0xffffff ); this.map = null; this.size = 1; this.sizeAttenuation = true; this.vertexColors = THREE.NoColors; this.fog = true; this.setValues( parameters ); }; 

A continuación se muestra lo que me gustaría poder hacer en Kotlin: ¿es posible usar objects anómalos de alguna manera? Originalmente estaba pensando en crear un object equivalente a los posibles perímetros para pasar, problema con eso es que anularía los valores actuales, que no es algo que quiero.

 //Interop Layer native("THREE.PointCloudMaterial") public class PointCloudMaterial(parameters: object) { } //This doesn't compile "Type Expected" //Example usage var sizeObject = object { var size: Double = size } PointCloudMaterial(sizeObject); 

La solución tipo segura puede verse como:

 native val <T> undefined: T = noImpl class PointCloudMaterialParameters ( val color: Int = undefined, val opacity: Double = undefined, //val map: THREE.Texture = undefined, val size: Double = undefined, //val blending: THREE.NormalBlending = undefined, val depthTest: Boolean = undefined, val depthWrite: Boolean = undefined, val vertexColors: Boolean = undefined, val fog: Boolean = undefined ) fun main(args : Array<String>) { println(PointCloudMaterialParameters(size = 2.0)) } native("THREE.PointCloudMaterial") public class PointCloudMaterial(parameters: PointCloudMaterialParameters) //Example usage PointCloudMaterial(PointCloudMaterialParameters(size = 2.0)) 

Otra solución que es más corta, pero no segura de tipo es:

 native("THREE.PointCloudMaterial") public class PointCloudMaterial(parameters: Any) //Example usage PointCloudMaterial(object { val size = 2.0 }) 

PD: Intentaremos simplificar este caso en el futuro.

  • Cómo analizar JSON desde una url usando Kotlin en Android?
  • ¿Podemos usar infix methods generics en Kotlin?
  • Cómo referencer types en parameters
  • Android Kotlin cambia mi array en spinner a un map
  • Kotlin: UnsupportedOperationException para el genérico reificado con el operador get / set
  • Los colors de Android Material Design no se aplican de forma coherente
  • Kotlin build no puede get classs creadas por SquidDatabase
  • Señal / evento AboutToQuit en Android
  • ¿Por qué Kotlin no permite ningún código en el constructor primario?
  • Kotlin: confusión con los generics
  • Crear un nuevo object de module de nodo de kotlin