2016-08-04 5 views
1

так даноКакой тип представляет тип в машинописном тексте?

class Foo { 
} 

interface TypeProvider() { 
    type(): ? ; 
} 

class Bar implements TypeProvider { 
    type(): ? { 
     return (Foo); 
    } 
} 

class Baz implements TypeProvider { 
    type(): ? { 
     return (Bar); 
    } 
} 

Foo это класс, но если я возвращаю класс от метода, какой тип я приписывать подпись метода?

в виде return (Foo) и return Foo такое же вещь? если они разные, я не уверен, что не хочу последнего.

ответ

2

Он должен быть Foo конструктор:

class Bar { 
    type(): { new(): Foo } { 
     return (Foo); 
    } 
} 

Или:

interface FooConstructor { 
    new(): Foo; 
} 

class Bar { 
    type(): FooConstructor { 
     return (Foo); 
    } 
} 
+0

может быть, как и ... это 'вернуть Foo' отличное от' возвращения (Foo) '? (надеясь, что я случайно не написал неправильный вопрос) – xenoterracide

+1

Из названия вопроса, не является ли OP вопросом о типе, который представляет любой конструктор? –

+1

Не нужно иметь скобки вокруг него, вы можете просто «вернуть Foo». @JuanMendes Я думал, что он имел в виду этот конкретный тип и просто написал 'type', чтобы было более понятно при чтении заголовка. В любом случае тип, который представляет любой конструктор, будет: '{new(): any}'. –