type interfaz array typescript typescript2.0

interfaz - typescript object type



Alias de ruta de importaciĆ³n de TypeScript (1)

Actualmente estoy trabajando en una aplicación de TypeScript que se compone de múltiples módulos de Node escritos en TypeScript, que están instalados en el directorio node_modules .

Antes de continuar, me gustaría señalar que estoy usando TypeScript 2.0, y no estoy en desacuerdo con el uso de la versión 2.1 dev si es necesario. Solo quiero que esto funcione.

La estructura de cada módulo de nodo es algo así como:

dist/ es2015/ index.js utils/ Calculator.js Calculator.d.ts Date.js Date.d.ts Flatpack.js Flatpack.d.ts src/ index.ts utils/ Calculator.ts Date.ts Flatpack.ts

La carpeta dist es la fuente generada, con esta ruta configurada usando outDir dentro de mi archivo tsconfig.json . También configuré la propiedad main en mi package.json para ser dist/es2015/index.js .

Cosas importantes a tener en cuenta:

  • En mi proyecto estoy usando moduleResolution tipo de node
  • Estoy usando TypeScript 2.0
  • No estoy preguntando cómo importar un archivo desde dentro del paquete. Estoy instalando el paquete a través de Npm y luego importándolo a través del nombre del paquete packagename/ dentro de una aplicación que está usando este módulo.

Ahora viene mi pregunta / problema. Mientras importo archivos de este módulo, me gustaría poder hacer esto:

import {Sin, Cos, Tan} from "common-utils/utils/Calculator";

Sin embargo, el archivo no puede resolverse en el directorio dist/es2015/utils . Idealmente, me gustaría que mis importaciones se resuelvan desde esta carpeta específica de dist y no desde la raíz, que es lo que parece estar sucediendo.

La importación anterior se debe escribir de la siguiente manera para que funcione:

import {Sin, Cos, Tan} from "common-utils/dist/es2015/utils/Calculator";

Sin embargo, escribir dist/es2015 cada vez no es ideal y simplemente hace que algunas de las importaciones parezcan realmente largas. ¿Hay alguna manera de configurar mi módulo para que se resuelva en el directorio dist/es2015 ? No quiero tener que incluir anulaciones dentro de mi proyecto, idealmente, cada módulo especificará de dónde se resuelven los archivos.

Si aún no está seguro de lo que estoy preguntando (y me disculpo si esto es confuso) en Jspm cuando crea un complemento / módulo para usar con Jspm, puede especificar dentro del package.json para el módulo algo como lo siguiente:

"jspm": { "registry": "npm", "jspmPackage": true, "main": "my-module", "format": "amd", "directories": { "dist": "dist/amd" },

Estoy buscando el equivalente al anterior en TypeScript (si existe). Una directiva de mapeo, entonces cuando el usuario final ejecuta npm install my-cool-package y luego en su aplicación intenta importar algo, todas las importaciones se resuelven por defecto en el directorio commonjs (el ejemplo anterior para Jspm usa amd, pero el mismo premisa).

¿Es esto posible o estoy malinterpretando algo aquí? Sé que se agregaron nuevas características de mapeo de ruta en la última versión, pero la documentación sobre su uso es casi inexistente.


Entonces, después de leer tu comentario, ¡me di cuenta de que no entendía tu pregunta! Si desea controlar las rutas desde la perspectiva de un paquete importado, solo use establecer la propiedad main de su package.json en un archivo que represente correctamente el gráfico de objetos de su módulo.

{ "main": "common-utils/dist/es2015/index.js" }

Si está intentando controlar las rutas de importación desde la perspectiva de un proyecto, lo que está buscando es la nueva función de mapeo de ruta de TypeScript 2 para la resolución del módulo. Puede habilitar la asignación de ruta configurando tsconfig.json siguiente manera:

{ "compilerOptions": { "baseUrl": ".", "paths": { "angular2/*": ["../path/to/angular2/*"], "local/*": ["../path/to/local/modules/*"] } } }

Luego, en sus archivos de TypeScript, puede importar los módulos de esta manera:

import { bootstrap } from ''angular2/bootstrap''; import { module } from ''local/module'';

Para obtener más detalles sobre la función de asignación de ruta en TypeScript 2, consulte este problema de Github .

En tu caso, creo que la siguiente configuración debería funcionar:

{ "compilerOptions": { "baseUrl": ".", "paths": { "common-utils/utils/*": ["./node_modules/common-utils/dist/es2015/utils/*"] } } }