TypeScript:如何返回类型的实例而不是类型本身

时间:2020-03-12 17:09:45

标签: javascript typescript

我有一个带有一些服务的演示课。我想创建一个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'

0 个答案:

没有答案