In una firma del metodo JavaScript, cosa si intende per un tipo di ritorno di "typeof blahBlahBlah"?

2

Ho visto un elenco di metodi API con entrambe le seguenti firme:

methodA(...) :        ReturnType

methodB(...) : typeof ReturnType

Capisco il primo ma non il secondo.

La mia domanda deriva dalla lettura dell'API per Angular2 in cui incontro entrambi i precedenti. Ad esempio, class TestBed elenca due metodi, initTestEnvironment e configureTestingModule , come:

initTestEnvironment(ngModule: Type<any>, platform: PlatformRef) : TestBed

configureTestingModule(moduleDef: TestModuleMetadata) : typeof TestBed

La mia comprensione è che la prima riga indica che quando si chiama questo metodo, il valore restituito sarà un oggetto di tipo TestBed . Questo ha senso per me.

Tuttavia, non capisco il tipo del valore restituito nella seconda riga. Il valore di ritorno di questo metodo è un oggetto di tipo typeof TestBed ? L'operatore JS typeof restituisce una stringa, quindi come si può avere un oggetto di tipo "Anything" invece di Anything , cioè una stringa rispetto a una classe / interfaccia / ecc.?

Sono interessato principalmente a una spiegazione della sintassi della firma di questo metodo. Tuttavia, apprezzerei molto anche un collegamento a una fonte online (ufficiale?) Che descrive questa stenografia / sintassi.

A proposito, presumo che la sintassi di questa firma del metodo sia specifica di TypeScript, ma per favore correggimi se ho torto.

(Ho provato a cercare su Google questa domanda in vari modi, tra cui tenere d'occhio le discussioni di StackExchange e sono venute a mani vuote. C'è una domanda su StackOverflow che richiede " Qual è il tipo di ritorno di typeof? " che è completamente non correlato. Altre ricerche si disintegrano rapidamente in Google separando "typeof" in "type of" che è anche del tutto inutile. )

    
posta Andrew Willems 04.10.2016 - 16:47
fonte

1 risposta

3

Una firma del metodo che restituisce typeof restituisce il costruttore del tipo specificato, in modo che tu possa new it.

    
risposta data 04.10.2016 - 17:43
fonte

Leggi altre domande sui tag