Transcripción: ¿Cómo puede un módulo de ser encontrado, pero no se ha resuelto? ¿Qué tiene esto que ver con la "noResolution'?
Cuando ejecuto el tsc en el 'value' directorio con --traceResolution, veo el módulo de 'foo' es "resuelto con éxito", pero no "encontró":
======== Module name 'foo' was successfully resolved to 'C:/dev/ts-options/typings/foo/index.d.ts'. ========
main.ts(1,18): error TS2307: Cannot find module 'foo'.
Ajuste de "noResolve": true
en tsconfig.compilerOptions hace que el error desaparece. Pero estoy supr-confundido!
Pregunta 1: ¿Cuál es la diferencia entre la "resolución" y "buscar"? Pensé que estos eran sinónimos
Pregunta 2: ¿por Qué "noResolve' afecta este comportamiento? ¿Qué noResolve realmente? TS opciones del compilador docs decir "no agregar triple-barra de referencias o la importación de módulos objetivos para la lista de archivos compilados." pero no sé lo que eso significa.
Con esta estructura de directorios
- /c/dev/ts-opciones/
- tipificaciones/
- foo
- índice.d.ts
- foo
- proj aquí es donde me estoy quedando tsc
- tsconfig.json
- principal.ts
- tipificaciones/
proj/tsconfig.json (problema se ha solucionado, si me cambio de noResolve false):
{
"compilerOptions": {
"baseUrl": ".",
"types": [],
"outDir": "../out",
"paths": {
"foo": [
"../typings/foo"
],
},
"noResolve": true
},
"include": [
"**/*.ts",
],
"exclude": [
"node_modules"
]
}
proj/main.ts:
import foo from "foo"
tipificaciones/foo/index.d.ts:
declare function foo(num: number): number;
export default foo;
Actualización
Dos soluciones:
- Conjunto de noResolve: false
- O añadir "../tipificaciones" para el apartado "incluye" en el tsconfig
Mi conjetura es que hay un concepto de una "unidad de compilación" tal que:
con
noResolve: false
a continuación, la unidad de compilación puede crecer de forma dinámica como el TS de la siguiente maneraimport
s.Con
noResolve: true
, entonces la unidad de compilación se fija a algo comotsconfig.baseUrl/** + (tsconfig.include - tsconfi.exclude)
.Cuando un archivo está fuera de la unidad de compilación, a continuación, TS puede "resolver" una importación (encontrar el camino hacia una .d.ts/.ts/.tsx archivo), pero no 'buscar' (en realidad leer el archivo).
Este aún no tiene sentido para mí, sin embargo. ¿Cuál es el punto de 'resolver' a una ubicación que uno sabe que no será capaz de 'buscar'?