angular - 如果 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
函数。
解决方案
类型在运行时不存在,但类是运行时的实际对象。请注意,接口不是运行时对象,因此不能用作注入令牌。
推荐阅读
- ruby-on-rails - 没有 routes.rb 文件的 Rails 应用程序
- spring-boot - Spring Boot 2.1.2 + POSTMAN + 415 Unsupported Media "application/json"
- datetime - 如何将 LocalDateTime 转换为 OffsetDateTime?
- google-chrome-devtools - “Coverage”选项卡是否应该列出我的页面加载的所有 CSS 文件?
- javascript - 将大数据批次从 Node/Express 传递到 Pug 文件
- dns - 将根域指向谷歌云存储桶
- excel - 如何将类模块 (.CLS) 导入 Sheet1 而不是类模块
- f# - 如何将此 MSBuild 脚本转换为 F#/FAKE?
- android - 如何修复 Android 应用程序的“违反权限政策”?
- aws-lambda - 如何使用多种方法从 API Gateway 触发 AWS Lambda?