TypeScript - איך אפשר להגדיר סוג של רכיב ב-Angular?


איך אני יכול להגדיר את סוג ה-Component בפונקציה דמיונית?

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

תשובה #1

יש כמה פריטים שונים בשאלה שלך שיכולים להזדקק להבהרה.

בדוגמה שלך export class MyApp {...} יוצרת מחלקה מסוג MyApp.

בדרך כלל תעביר מופע של מחלקה לפונקציה. אם זה מה שאתה מנסה לעשות, אז זה ייראה כך:

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

אם אתה באמת מנסה להעביר סוג כיתה לפונקציה, אז תרצה לעשות את הדברים הבאים:

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

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

דרך נוספת בה תוכל להפוך את זה ליותר עוצמתי היא אם תגבילו את הרכיבים שיכולים להיות מועברים לפונקציה רק לאלו שמממשים ממשק נתון. דוגמה לכך תהיה כדלקמן:

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);