我想创建一个以Types作为值的字典。
f.e,在C#中,我会做:Dictionary<Type, WhateverINeed>
,但在打字稿中我真的知道可以做到这一点。
我在type.d.ts
中遇到@angulalr/core
,但我不知道如何使用它。我已经看到泛型类使用了Route
接口,您可以在其中为路径提供Component类。
基本上,我想在类型和该类的Observable
之间创建一个映射
但我知道的唯一字典键类型可以与Typescript的字典一起使用int
和string
。
用例可以是:
service.method<MyClass>(...)
或
service.method(MyClass, ...)
感谢您的帮助!
答案 0 :(得分:4)
这基本上是Map<,>
的类型安全包装器,它只适用于具体的类(函数):
import {Type} from '@angular/core';
class Service
{
private map = new Map<Type<any>, Observable<any>>();
public set<T>(key:Type<T>, value:Observable<T>):void
{
this.map.set(key, value);
}
public get<T>(key:Type<T>):Observable<T>
{
return this.map.get(key);
}
}
const service = new Service();
service.set(MenuModel, Observable.of(new MenuModel()));
service.set(Number, Observable.of(0));
service.get(MenuModel).subscribe(model => console.debug('menu', model.userMenu));
service.get(Number).subscribe(model => console.debug('number', model));