我使用的是Angular 1.4,TypeScript 1.6和CommonJS外部模块。
我在这个模块中有三个文件:
paginator.module.ts
paginator.service.ts
paginator.controller.ts
paginator.module.ts
看起来像这样:
import PaginatorService = require('./paginator.service');
import PaginatorCtrl = require('./paginator.controller');
var Paginator = angular.module('paginator', [])
.service('pageService', PaginatorService)
.controller('pageCtrl', PaginatorCtrl);
此处paginator.service.ts
:
class PaginatorService {
currentPage: number;
pageCount: number;
pages: Array<Array<any>>;
constructor() {
this.currentPage = 0;
}
}
export = PaginatorService;
在paginator.controller.ts
中,我使用依赖注入注入pageService
和$scope
,并且当我给它一个PaginatorService
类型时,我希望看到类型信息。
class PaginatorController {
scope: ng.IScope;
pageService: PaginatorService;
/**
* @param $scope
* @param pageService
*/
constructor($scope: ng.IScope, pageService: PaginatorService) {
this.scope = $scope;
this.pageService = pageService;
}
export = PaginatorController;
但是,我在atom-typescript中收到以下错误:
TS Error: Cannot find name 'PaginatorService'.
在paginator.controller.js
文件中添加另一个导入语句可以解决问题(即import PaginatorService = require('./paginator.service');
)。但是,这似乎是多余的,因为我在设置Angular模块时已经require()
这项服务。
我尝试在tsc --declaration
上使用paginator.service.js
生成一个声明文件,您可以在下面查看,但它没有解决问题。
自动生成d.ts文件
declare class PaginatorService {
currentPage: number;
pageCount: number;
pages: Array<Array<any>>;
constructor();
}
export = PaginatorService;
我的问题是这样的:使用CommonJS + Angular + TypeScript来使用正确的模块然后让Angular的依赖注入从那里接管,特别是跨文件的推荐模式是什么?
谢谢!
答案 0 :(得分:1)
TS错误:找不到名称'PaginatorService'。
你在做什么
export class PaginatorService
您需要将其导入为
import {PaginatorService} from "./paginatorService";
或
import paginatorService = require("./paginatorService");
import PaginatorService = paginatorService.PaginatorService;