typescript - Hvordan kan man definere typen af en komponent i Angular?


Hvordan kan jeg definere typen af Component i en dummyfunktion?

@Component({
   templateUrl: 'a'
})
export class MyApp {
}
function dummy(component: any) {
     ....
}       
dummay(MyApp);

Svar #1

Der er et par forskellige ting i dit spørgsmål, som kunne bruge afklaring.

I dit eksempel export class MyApp {...} opretter en klasse af typen MyApp.

Generelt ville du sende en instans af en klasse til en funktion. Hvis det er det, du prøver at gøre, ville det se sådan ud:

function dummy(component: MyApp) {
     ....
}       
dummay(new MyApp());

Hvis du faktisk forsøger at sende en klassetype til funktionen, så vil du gerne gøre følgende:

import {
  Type
} from '@angular/core';

function dummy(component: Type<any>) {
     ....
}       
dummay(MyApp);

En anden måde, du kunne gøre dette mere kraftfuldt på, er, hvis du begrænsede de komponenter, der kunne videregives til funktionen, til kun dem, der implementerer en given grænseflade. Et eksempel på dette ville være som følger:

import {
  Type
} from '@angular/core';

export interface IFoo {
   id: number;
   getStuff: () => string;
}
@Component({
   templateUrl: 'a'
})
export class MyApp implements IFoo {
}
function dummy(component: Type<IFoo>) {
     const stuff = component.getStuff();
     ....
}    

dummay(MyApp);

Relaterede artikler