Как импортировать angular.IInjectorService, используя синтаксис модуля ES6 в TypeScript

Как импортировать angular.IInjectorService из angular.d.ts с использованием синтаксиса модуля ES6 в TypeScript?

EDIT: Что мне действительно хотелось бы знать, так это то, как я могу использовать IInjectorService без полной его квалификации. Другими словами, я хочу сделать это:

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

Вместо этого:

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) {...}
}

person battmanz    schedule 15.05.2015    source источник


Ответы (2)


Будет работать следующее:

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

Однако я хотел бы сказать, что auto было плохим решением (но опять же, префикс I тоже). TypeScript был новым, когда были написаны определения angular, и из-за популярности angular у нас не было возможности реорганизовать его в лучший.

person basarat    schedule 18.05.2015
comment
Примечание для меня и других разработчиков: обязательно включите ссылку /// <reference path="../path/to/angular" />. Без него не работает. - person battmanz; 20.05.2015
comment
Да, если ваша среда IDE поддерживает tsconfig.json: github.com/ TypeStrong/atom-typescript/blob/master/docs/ - person basarat; 21.05.2015

Он находится под модулем auto и будет напечатан как IInjectorService.

Вы можете использовать его следующим образом:

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