带有TypeScript的导入的类不能在Angular.js中用作服务

时间:2018-10-01 17:49:59

标签: angularjs typescript webpack

我正在将ES6项目转换为TypeScript,在Angular.js中将@typed/angular.service调用一起使用时遇到了问题。

如果我这样做:

import * as angular from 'angular';
class OrderTreeService {}

export const orderTree = angular
    .module('orderTree', [])
    .service('OrderTreeService', OrderTreeService)
    .name;

它完美地工作。 但是,如果我将该服务移至文件order-service.service.ts并执行以下操作:

import * as angular from 'angular';
import { OrderTreeService } from './order-tree.service';

export const orderTree = angular
    .module('orderTree', [])
    .service('OrderTreeService', OrderTreeService)
    .name;

然后它不再起作用并出现此错误:

TS2345: Argument of type 'typeof OrderTreeService' is not assignable to parameter of type 'Injectable<Function>'.
  Type 'typeof OrderTreeService' is not assignable to type '(string | Function)[]'.
    Property 'pop' is missing in type 'typeof OrderTreeService'.

我不知道有什么区别?它会丢失某些类型信息吗?

这是order-service.service.ts的内容:

export class OrderTreeService {}

1 个答案:

答案 0 :(得分:0)

不确定,但是在将OrderTreeService移动到单个文件时,您是否从OrderTreeService导出了order-tree.service.ts服务?

order-tree.service.ts

export class OrderTreeService {}