根据打字稿文件(https://www.typescriptlang.org/docs/handbook/module-resolution.html):
相对于导入文件解析相对导入 无法解析为环境模块声明。
但也是:
例如,来自" ./ moduleB"的导入语句,例如import {b};在 /root/src/moduleA.ts会导致尝试以下操作 定位" ./ moduleB"的位置:
/root/src/moduleB.ts
/root/src/moduleB.tsx
/root/src/moduleB.d.ts
/root/src/moduleB/package.json (if it specifies a "typings" property)
/root/src/moduleB/index.ts
/root/src/moduleB/index.tsx
/root/src/moduleB/index.d.ts"
行 /root/src/moduleB.d.ts 在我看来是一个环境模块声明,用于解析相对导入" ./ moduleB" - >确切地说文档否认了它。
我在这里遗漏了什么或文档错了吗?
答案 0 :(得分:2)
/ orotot/src/moduleB.d.ts这一行在我看来是一个环境模块声明......我在这里遗漏了什么或文档错了吗?
你在这里遗漏了一些东西。 moduleB.d.ts
不是环境模块声明。以下是包含moduleB
的环境模块声明的文件示例。
// someFile.d.ts
declare module "moduleB" {
export class b { }
}
declare
关键字指定环境声明。
关于环境,the documentation says:
这个词我们调用没有定义实现“ambient”的声明。通常,这些是在.d.ts文件中定义的。
环境声明包括但不限于环境模块声明。包含环境声明的.d.ts文件不是环境模块声明,也不一定包含环境模块声明。
例如,以下greeter.d.ts文件包含环境类声明,但它不是环境模块声明。
// greeter.d.ts
declare class Greeter {
constructor(greeting: string);
greeting: string;
}
以下foobar.d.ts
文件包含两个环境模块声明" foo"和" bar",但文件本身不是环境模块声明。
// foobar.d.ts
declare module "foo" {
export function doFoo(foo: string): string;
}
declare module "bar" {
export function doBar(bar: string): string;
}
您最初引用的文档指出"./foo"
的相对导入无法解析为该模块的上述环境声明。
请参阅:https://www.typescriptlang.org/docs/handbook/modules.html
另请参阅:https://github.com/Microsoft/TypeScript-Handbook/issues/180
另请参阅:https://www.typescriptlang.org/docs/handbook/declaration-files/by-example.html