Angular+TypeScript+外部模块.如何跨文件维护类型信息
Angular + TypeScript + External Modules. How to maintain type information across files?
我使用的是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()
d了这个服务。我尝试在
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错误:找不到名称"PaginatorService"。
你在做
export class PaginatorService
您需要将其作为导入
ES6
import {PaginatorService} from "./paginatorService";
或
旧式
import paginatorService = require("./paginatorService");
import PaginatorService = paginatorService.PaginatorService;
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 在<输入类型=“;文件“/>
- 如何使用javascript获取从指定文件夹创建的所有文件的名称、大小、类型和日期
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- Javascript-上传文件内容类型验证
- JQuery 文件附件: 类型错误: $(..) 为空
- 无法创建 Sencha Touch 2 jsb3 文件,类型错误:“未定义”
- CocoonJS和Panda.js-配置文件图片类型的事情是可能的
- Angular+TypeScript+外部模块.如何跨文件维护类型信息
- 如何读取节点中MDB文件中类型为doubles的列
- 如何在没有表单提交的情况下使用jquery从文件输入类型中获取文件名
- 使用文件输入类型发送图像到服务器
- 在javascript中为所有文件输入类型运行函数
- javascript:需要上传文件","类型":" oautheexception Facebook用户已经注册
- 如何使用jQuery获取用户选择文件的类型
- JS和类型.匹配文件mime类型-需要通知
- 验证文件输入类型是否强制出现在html中
- 多个文件组成类型脚本项目
- AJAX发送的jquery FormData中未包含文件输入类型
- jQuery验证器不能为文件输入类型工作