gpt4 book ai didi

javascript - Angular + TypeScript + 外部模块。如何跨文件维护类型信息?

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:24 25 4
gpt4 key购买 nike

我正在使用 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 中,我使用依赖注入(inject)将 pageService$scope 一起注入(inject),我希望在我给它一个 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 模块时已经require()了这个服务。

  • 我尝试在 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 的依赖注入(inject)从那里接管的推荐模式是什么,尤其是跨文件?

谢谢!

最佳答案

TS Error: Cannot find name 'PaginatorService'.

你在做什么

export class PaginatorService 

您需要将其导入为

ES6

import {PaginatorService} from "./paginatorService"; 

旧风格

import paginatorService = require("./paginatorService"); 
import PaginatorService = paginatorService.PaginatorService;

关于javascript - Angular + TypeScript + 外部模块。如何跨文件维护类型信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com