我正在尝试为SPA项目设置restangular,但我无法将其解析为grunt-tsng的依赖项。我已经使用bower安装它(tsid用于来自definitelyTyped的打字稿定义)。
tsng: {
options: {
extension: ".ng.ts"
},
dev: {
files: [
// TODO: Automate the generation of this config based on convention
{
src: ["Client/app/**/*.ts", "!**/*.ng.ts"],
dest: "Client/app"
}
]
}
},
/// <reference path="../../typings/tsd.d.ts" />
module App {
var dependencies = [
"ui.router",
"ui.bootstrap",
"restangular"
...
];
function configuration(
$stateProvider: ng.ui.IStateProvider,
$urlRouterProvider: ng.ui.IUrlRouterProvider,
RestangularProvider: restangular.IProvider, <-- here it fails
...
/// <reference path="restangular/restangular.d.ts" />
Running "tsng:dev" (tsng) task
Warning: Error: Can't resolve dependency for module function App.config with name restangular.IProvider Use --force to continue.
其他依赖项,例如 ui-router , ui-bootstrap 等正常运行。可能是什么原因造成的? grunt-tsng是否存在任何不兼容性?
答案 0 :(得分:2)
好吧,我明白了。
执行grunt-tsng时,它会扫描所有依赖项/模块等,以自动将它们挂钩为角度,这样您就不必自己动手了。这里有两个简单的规则适用:注入的依赖关系是你自己的(例如,你可以在你的模块中有类型脚本的实例),只需要用它们的名字来定义。 E.g:
constructor(service: MyModule.IMyService) {}
外部依赖关系,例如从angular本身用'$'表示法声明。 grunt-tsng将假设它们的依赖项本身在运行时被解析,因此只需将它们与它们的名称联系起来:
constructor($routeProvider: ng.IRouteService) {}
但是现在restangular中的服务并没有被命名为'$ restangular',而只是'restangular'。这导致以下结果:
<强>结论:强>
这是迟钝的。