Tengo dificultades para descubrir cómo funciona exactamente esta declaración de importación (en una aplicación Angular escrita en Typescript):
import 'rxjs/add/operator/toPromise'; Entiendo que rxjs está asignado a la subcarpeta node_modules respectiva en el archivo de configuración SystemJS, pero luego estoy atascado. Veo que hay un archivo index.js pero no veo si esto ayuda a resolver la parte add/operator/... o cómo lo hace.
Del mismo modo, no entiendo este:
import {Observable} from 'rxjs/Observable'; Nuevamente, no hay ningún archivo Observable.* en este lugar. Supongo que de alguna manera funciona a través del archivo index.js, pero realmente me gustaría obtener una comprensión más completa porque leí que es fácil importar todo RxJS por accidente, lo que aumenta los tiempos de carga de la página.
Eché un vistazo más de cerca a la documentación de resolución del módulo Typescript, pero tengo la sensación de que esto no es suficiente para explicarlo.
Actualización: después de leer la respuesta aceptada a continuación, descubrí que había estado mirando el directorio node_modules/rx en lugar de node_modules/rxjs , por lo que las declaraciones de importación coinciden perfectamente con la estructura del directorio.
Es bastante simple porque TypeScript por defecto busca en el directorio node_modules .
Importando lo siguiente:
import {Observable} from 'rxjs/Observable'; se resuelve como node_modules/rxjs/Observable.d.ts que es suficiente para compilar el código.
De manera similar, la importación rxjs/add/operator/toPromise se resuelve como node_modules/rxjs/add/operator/toPromise.ts . Por cierto, puede usar la opción del compilador --traceResolution para ver qué ruta de TypeScript se prueba.
Cuando tenga su JS compilado (por ejemplo, en formato commonjs ), puede ejecutar su aplicación en node porque llamará a require('rxjs/Observable') que se resolverá en node_modules/rxjs/Observable.js . Luego, de manera similar con rxjs/add/operator/toPromise .
Tenga en cuenta que la estructura del código de la página RxJS github es diferente al paquete npm real. Básicamente, solo el package.json y el directorio src con los archivos .js y .d.ts compilados se cargan en el repositorio de npm (los archivos de origen .ts originales están en node_modules/rxjs/src , pero nunca desea trabajar directamente con ellos). ).