【发布时间】:2017-08-10 09:26:54
【问题描述】:
我有一个使用 requireJS 的模块构建的网站。我想在这个项目上开始使用 TypeScript(1.8,Visual Studio 2015),并尝试重写其中一个模块。
目前我的模块如下所示:
// file: ProjectFoo/app/dashboard/viewProfile.js
define(["services/datasvc"], function (datasvc) {
datasvc.getData(...).then(...);
});
文件datasvc.js位于以下路径:ProjectFoo/services/datasvc.js
为了让 datasvc.js 可以被 requireJS 访问,我配置了如下路径(requireJS 配置):
services -> ./services
重写我的模块后,我使用以下构造导入datasvc(注意:TypeScript 编译器配置为使用amd 模块结构)。
import * as datasvc from "services/datasvc";
但这不起作用,因为 TypeScript 将 services/datasvc 视为相对于当前文件的路径。但是,如果我按如下方式重写该导入语句,那么 TypeScript [compiler] 会成功:
import * as datasvc from "../../services/datasvc";
但是,这会导致 datasvc 使用相对路径导入,即生成代码类似于:
define(["require", "exports", "../../services/datasvc"]...
这里的问题是我必须更改 ../ 的编号以包含在模块路径中,具体取决于我所在文件的嵌套深度。
问题:
有没有办法使用 import * as datasvc from "services/datasvc" 并以某种方式配置 TypeScript 以与 requireJS 相同的方式处理?
【问题讨论】:
标签: typescript