我想为特定文件编写定义,例如我有这些文件:
其中style.less
是css模块,我希望此文件的写定义具有自动完成功能。所有定义必须在infa.d.ts
。
在some.ts
我有
import * as s from './style.less';
和infa.d.ts
declare module 'one/style.less' {
}
TypeScript告诉它无法找到模块,但声明指向正确的文件。
如果我将some.ts
导入更改为
import * as s from 'one/style.less';
一切正常,但想象一下如果路径会更长或者我将文件夹移动到另一个地方,在这种情况下我将不得不改变路径。
另一种选择是我可以将定义与较少的文件一起放入
但这不适合我,因为会有很多文件。
答案 0 :(得分:0)
不幸的是,这不受支持。
环境模块无法指定相对路径。
我尝试过多种解决方法,但唯一允许在导入模块说明符中指定相对路径的方法是为每个文件创建一个.d.ts
文件,如详细描述,或者指定完整的通配符路径。
declare module "*.less" {
declare const content: string;
export default content; // or export = content for CommonJS
}
然后你可以从任何 .less 文件导入,但转到定义会烦恼地带你到上面的环境声明。 这不提供类型安全性,也不验证文件是否存在,但也没有任何其他方法。请参阅讨论此功能的https://github.com/Microsoft/TypeScript/issues/6615。
如果使用Visual Studio Code,有许多插件可以提供更好的导航行为,这在很大程度上减轻了定义的烦恼,但是没有验证文件的存在,因此仍然存在重构危险。也就是说,我没有发现这在实践中确实是一个问题,所以通配符方法基本上满足了我的需求。它让我继续我的一天。
答案 1 :(得分:0)