angular: Better types for HTTP interceptors & response objects (#19247)

* Better types for HTTP interceptors & response objects

* Fix failing tests

* Don't use TS 2.3 features, staying compatible with 2.1
This commit is contained in:
Georgii Dolzhykov
2017-08-23 00:22:20 +03:00
committed by John Reilly
parent 7b8116c9f2
commit 69acc07b23
7 changed files with 88 additions and 69 deletions

View File

@@ -1,8 +1,8 @@
import * as angular from "angular";
import * as ng from 'angular';
let myApp = angular.module('myApp', ['feature-flags']);
const myApp = ng.module('myApp', ['feature-flags']);
const flagsData: Array<angular.featureflags.FlagData> = [
const flagsData: Array<ng.featureflags.FlagData> = [
{
key: '1',
active: true,
@@ -17,15 +17,16 @@ const flagsData: Array<angular.featureflags.FlagData> = [
}
];
myApp.config(function (featureFlagsProvider: angular.featureflags.FeatureFlagsProvider) {
myApp.config(function(featureFlagsProvider: ng.featureflags.FeatureFlagsProvider) {
featureFlagsProvider.setInitialFlags(flagsData);
});
myApp.run(function ($q: angular.IQService, $http: angular.IHttpService, featureFlags: angular.featureflags.FeatureFlagsService) {
let deferred = $q.defer();
deferred.resolve(flagsData);
featureFlags.set(deferred.promise);
myApp.run(function(
$q: ng.IQService,
$http: ng.IHttpService,
featureFlags: ng.featureflags.FeatureFlagsService
) {
featureFlags.set($q.resolve(flagsData));
featureFlags.set($http.get('/data/flags.json'));
});
featureFlags.set($http.get<Array<ng.featureflags.FlagData>>('/data/flags.json'));
});

View File

@@ -6,9 +6,9 @@
/// <reference types="angular" />
import * as angular from "angular";
import * as ng from 'angular';
declare module "angular" {
declare module 'angular' {
namespace featureflags {
export interface FlagData {
/**
@@ -27,17 +27,22 @@ declare module "angular" {
name: string;
/**
* A long description of the flag to further explain the feature being toggled (only visible in the list of flags)
* A long description of the flag to further explain the feature being toggled
* (only visible in the list of flags)
*/
description: string;
}
export interface FeatureFlagsProvider {
setInitialFlags(flags: Array<FlagData>): void;
setInitialFlags(flags: ReadonlyArray<FlagData>): void;
}
export interface FeatureFlagsService {
set(flagsPromise: angular.IPromise<FlagData> | angular.IHttpPromise<FlagData>): void;
set(
flagsPromise:
| ng.IPromise<ReadonlyArray<FlagData>>
| ng.IHttpPromise<ReadonlyArray<FlagData>>
): void;
}
}
}