troika icon indicating copy to clipboard operation
troika copied to clipboard

Change types for createDerivedMaterial to be optional

Open jerzakm opened this issue 11 months ago • 0 comments

I ran into type issues when I was working with createDerivedmaterial and I found a relatively simple solution for them. I'm not very accustomed to using JSDoc, so let me know if I'm horribly wrong here but it looks good for me. Here's a quick rundown:

In a fresh Typescript (sveltekit) project I get the classic "Could not find a declaration file for module 'troika-three-utils'", despite it being type with JSDocs. I found that adding "maxNodeModuleJsDepth": 1 in tsconfig fixes the issue. (Could be worth adding to docs, I didn't do that yet)

With that out of the way, I am now getting type checking and autocomplete but all of the defined types for createDerivedMaterial options are required. I found that adding = after the specified type makes it optional. https://jsdoc.app/tags-param#optional-parameters-and-default-values

  /**
   * @param {Object} options.defines - <<< THIS IS REQUIRED
   * @param {Object=} options.extensions -  <<< THIS IS OPTIONAL
   */

As a result, after adding "maxNodeModuleJsDepth": 1 to tsconfig and applying my proposed changes I get correct types

Code_iNNKkmLagr

jerzakm avatar Mar 01 '24 18:03 jerzakm