Browse Source

fix(core): add ExtractFromOutput instead of ExtractFromGeneric to common types

#2404
pull/2522/head
mehmet-erim 7 years ago
parent
commit
c7337cbc10
  1. 6
      npm/ng-packs/packages/core/src/lib/models/common.ts
  2. 14
      npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts

6
npm/ng-packs/packages/core/src/lib/models/common.ts

@ -1,5 +1,7 @@
import { eLayoutType } from '../enums/common'; import { eLayoutType } from '../enums/common';
import { Config } from './config'; import { Config } from './config';
import { EventEmitter } from '@angular/core';
import { Subject } from 'rxjs';
export namespace ABP { export namespace ABP {
export interface Root { export interface Root {
@ -48,5 +50,7 @@ export namespace ABP {
[key: string]: T; [key: string]: T;
} }
export type ExtractFromGeneric<Generic> = Generic extends Array<infer X> ? X : Generic; export type ExtractFromOutput<
T extends EventEmitter<any> | Subject<any>
> = T extends EventEmitter<infer X> ? X : T extends Subject<infer Y> ? Y : never;
} }

14
npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts

@ -1,5 +1,6 @@
import { Type } from '@angular/core'; import { Type, EventEmitter } from '@angular/core';
import { ABP } from './common'; import { ABP } from './common';
import { Subject, BehaviorSubject } from 'rxjs';
export namespace ReplaceableComponents { export namespace ReplaceableComponents {
export interface State { export interface State {
@ -11,7 +12,10 @@ export namespace ReplaceableComponents {
key: string; key: string;
} }
export interface ReplaceableTemplateData<I, O> { export interface ReplaceableTemplateData<
I,
O extends { [K in keyof O]: EventEmitter<any> | Subject<any> }
> {
inputs: ReplaceableTemplateInputs<I>; inputs: ReplaceableTemplateInputs<I>;
outputs: ReplaceableTemplateOutputs<O>; outputs: ReplaceableTemplateOutputs<O>;
componentKey: string; componentKey: string;
@ -21,8 +25,10 @@ export namespace ReplaceableComponents {
[K in keyof T]: T[K]; [K in keyof T]: T[K];
}; };
export type ReplaceableTemplateOutputs<T> = { export type ReplaceableTemplateOutputs<
[K in keyof T]: (value: ABP.ExtractFromGeneric<T[K]>) => void; T extends { [K in keyof T]: EventEmitter<any> | Subject<any> }
> = {
[K in keyof T]: (value: ABP.ExtractFromOutput<T[K]>) => void;
}; };
export interface RouteData<T = any> { export interface RouteData<T = any> {

Loading…
Cancel
Save