我有一个带有一些服务的演示课。我想创建一个get方法,该方法将根据提供的键返回给定服务的实例。
在我的示例中,TypeScript返回服务的类型,而不是其实例。 (请参阅评论错误)
谢谢!
class Foo { fooMethod() { console.log('foo') } }
class Bar { barMethod() { console.log('bar') } }
class Demo {
private static services = {
foo: Foo,
bar: Bar,
}
public get = <Key extends keyof typeof Demo.services, Service extends typeof Demo.services[Key]>(key: Key): Service => {
const instance = Object.create(Demo.services[key].prototype)
Demo.services[key].apply(instance)
return instance
}
}
const demo = new Demo()
demo.get('foo').fooMethod() // Property 'fooMethod' does not exist on type 'typeof Foo'