Как добавить в Typescript типизацию для AngularJS $q и $http?

В моем коде у меня есть это:

/// <reference path="../../../../scripts/typings/angularjs/angular.d.ts" />

angular.module('question')
    .controller('QuestionHomeController', [
        '$http',
        'enumService',
        '$q',
        '$rootScope',
        '$scope',
        '$state',
        questionHomeController]);

function questionHomeController(
    $http,
    enumService,
    $q,
    $rootScope,
    $scope,
    $state
    ) {

Может ли кто-нибудь сказать мне, как я могу добавить Typescript для ввода $http и $q? Я уже ссылаюсь на файлы определения типа AngularJS, но типизация пока не отображается

Ответ 1

Если у вас есть типизации, включенные в ваш проект, вам просто нужно использовать его как тип для переменных, чтобы вы получили свойства/функции этого типа, отображаемые в intellisense.

angular.module('question')
    .controller('QuestionHomeController', [
        '$http',
        'enumService',
        '$q',
        '$rootScope',
        '$scope',
        '$state',
        questionHomeController]);

function questionHomeController(
    $http : ng.IHttpService,
    enumService,
    $q: ng.IQService,
    $rootScope : ng.IRootScopeService,
    $scope : ng.IScope,
    $state : ng.ui.IStateService
    ) {

Аналогичным образом вы также можете указать тип интерфейса для примера службы for enumService. Также вы можете расширить существующие типы. Например, ваша область видимости имеет свою собственную функцию, и вы используете область действия как ваш viewModel, затем: -

interface IquestionHomeViewModel extends ng.IScope {
        func1(arg:string):void;
        ...

}

и вы будете использовать его как: -

$scope : IquestionHomeViewModel ,