导入的类不能在带有 TypeScript 的 Angular.js 中用作服务
Posted
技术标签:
【中文标题】导入的类不能在带有 TypeScript 的 Angular.js 中用作服务【英文标题】:Imported class cannot be used as service in Angular.js with TypeScript 【发布时间】:2019-03-06 20:54:25 【问题描述】:我正在将 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】:不完全确定,但在将OrderTreeService
移动到单个文件时,您是否从order-tree.service.ts
导出了OrderTreeService
服务?
order-tree.service.ts
export class OrderTreeService
【讨论】:
以上是关于导入的类不能在带有 TypeScript 的 Angular.js 中用作服务的主要内容,如果未能解决你的问题,请参考以下文章
vue-class-component + typescript:如何在导入的函数中使用组件的类作为“this”的类型?
带有 toString() 的类可以用作字符串,但是如何说服 TypeScript 编译器呢?
如何让 TypeScript 对扩展从“节点模块”导入的类感到满意?
带有 es6 导入的 Module.exports 用于 typescript 中的 webpack.config.ts