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

Loading…
Cancel
Save