我正在使用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错误:找不到名称’PaginatorService’.
我试过的
>在paginator.controller.js文件中添加另一个import语句可以解决问题(即导入PaginatorService = require(‘./ paginator.service’);).但是,这似乎是多余的,因为我在设置Angular模块时已经要求()这项服务.
>我尝试在paginator.service.js上使用tsc –declaration生成一个声明文件,您可以在下面查看,但它没有解决问题.
自动生成d.ts文件
declare class PaginatorService {
currentPage: number;
pageCount: number;
pages: Array<Array<any>>;
constructor();
}
export = PaginatorService;
>修改此声明文件以声明模块(环境声明?)似乎有效,但为我需要迁移到CommonJS语法的100个Angular服务手动执行此操作会使此方法出现问题.
我的问题是:使用CommonJS Angular TypeScript来使用正确的模块然后让Angular的依赖注入从那里接管,特别是跨文件的推荐模式是什么?
谢谢!
最佳答案
TS Error: Cannot find name ‘PaginatorService’.
你在做
export class PaginatorService
您需要将其导入为
ES6
import {PaginatorService} from "./paginatorService";
要么
老式
import paginatorService = require("./paginatorService");
import PaginatorService = paginatorService.PaginatorService;