tengo un modulo
camera.d.js
que solo contiene la siguiente definición:
/** * @typedef {object} CropperConfiguration * @property {Dimension} dimensions - Dimensions. */e importa el módulo
global.d.js
que contiene la siguiente definición:
/** * @typedef {object} Dimension * @property {number} width - Width. * @property {number} height - Height. */ Entonces... si camera.d.js importa global.d.js ... en mi módulo CameraUtils.js , que importa camera.d.js , ¿necesito importar global.d.js para acceder a la definición de Dimension ?
Pensé que sí, pero... por alguna razón que no entiendo, puedo acceder perfectamente a esta definición solo importando camera.d.js e ignorando global.d.js .
¿Por qué?
--
Contenido completo de camera.d.js
/** * @file Camera type definitions. * @license MIT * @version 1.0.0 * @since 1.0.0 * @category utils * @subcategory camera * @module CameraTypes */ import "../global/global.d"; /** * @typedef {object} CropperConfiguration * @property {Dimension} dimensions - Dimensions. * @property {string} name - Cropper's vector icon name. * @property {string} type - Cropper's vector icon type. */ Y... para importar los tipos en CameraUtils.js solo hago:
import "./camera.d"; // global scope ...He estado usando JSDocs con VSCode IntelliSence durante algunos años. De forma predeterminada, está deshabilitado, por lo que debe habilitarlo primero:
https://code.visualstudio.com/docs/languages/jsconfig
Tengo un proyecto público al que puedes hacer referencia desde aquí:
https://github.com/clshortfuse/webhoster/blob/master/jsconfig.json
Pero básicamente, necesitas:
{ "compilerOptions": { "checkJs": true, } } No necesita un archivo .d.js . Puedes alinearlos. También puede usar un archivo .d.ts para tipos complejos y luego importar el equivalente .js en línea.
Ver: https://github.com/clshortfuse/webhoster/tree/master/types