首页 > 解决方案 > 如果 typescript 的类型在运行时没有被解释,Angular 怎么知道注入哪个类?

问题描述

当我们在组件中注入依赖项时,如下所示:

export class AppComponent {
  constructor(private myService: MyService) {}
}

...................

@Injectable({
  providedIn: "root",
})
export class MyService {
  constructor() {}
}

如果在 typescript 中,类型在运行时不存在,那么 Angular 怎么知道我的 Service 需要接收的参数是MyService???

编辑:

给出一个更具体的问题来解决:

class Dependency {}

class Foo {
  constructor(dependency: Dependency) {}
}

type Prototype<T> = new (...args: unknown[]) => T;

function InversionOfControl<T>(Class: Prototype<T>): T {
  /// injects all dependencies of Class and returns a instance of it
}

const foo = InversionOfControl(Foo);

我如何才能在运行时仅使用 typescript 和常规 javascript 创建此InversionOfControl函数。

标签: angulartypescripttypesdependency-injectioninversion-of-control

解决方案


类型在运行时不存在,但类是运行时的实际对象。请注意,接口不是运行时对象,因此不能用作注入令牌。


推荐阅读