如何在TypeScript中使用ES6模块语法导入angular.IInjectorService?

3
如何在TypeScript中使用ES6模块语法从angular.d.ts文件导入angular.IInjectorService编辑:我真正想知道的是如何在不完全限定它的情况下使用IInjectorService。换句话说,我想这样做:
class TestCtrl {
    constructor($injector: IInjectorService) {...}
}

Instead of this:

class TestCtrl {
    constructor($injector: ng.auto.IInjectorService) {...}
}

目前,我是用内部模块的方式来完成它。就像这样:
///<reference path="../path/to/typeDefinitions/angularjs/angular" />

import IInjectorService = ng.auto.IInjectorService;

class TestCtrl {
    constructor($injector: IInjectorService) {...}
}

我的问题是,有没有一种ES6的方法来实现这个?例如,类似于以下伪代码:
import {IInjectorService} from '../path/to/typeDefinitions/angularjs/angular';

class TestCtrl {
    constructor($injector: IInjectorService) {...}
}
2个回答

2

这是在auto模块中的,它将被输入为IInjectorService

您可以像这样使用它:

class TestCtrl {
  myReference: any;
  constructor($injector: ng.auto.IInjectorService){
    myReference = $injector.get('name');
  }
}

2
以下内容可以正常工作:

以下将正常工作:

import {auto as ngAuto} from "angular";
var foo:ngAuto.IInjectorService;

然而,我想说的是 auto 是一个糟糕的决定(但同样也是 I 前缀)。在编写 Angular 定义时,TypeScript 还很新,由于 Angular 的流行,我们没有机会将其重构为更好的定义。


提醒自己和其他开发者:务必包含引用 /// <reference path="../path/to/angular" />。没有它是无法正常工作的。 - battmanz
1
只要你的IDE支持tsconfig.json,它就会起作用:https://github.com/TypeStrong/atom-typescript/blob/master/docs/tsconfig.md - basarat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接