microsoft / microsoft/TypeScript

"is not a constructor" should be detected in compile time as "used before its declaration."

Aperta
#29,220 9 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Awaiting More Feedback Experience Enhancement Suggestion
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

TypeScript Version: 3.2.2
This repository demonstrates that I run in to the issue in ts@next.
https://github.com/qballer/tsbug

Search Terms:
constructor, lexical scope, run time error vs compile time
Code

const b = getB() 

function getB() {
    // will throw C is not a constructor in runtime 
    return new C() // ** 
}

// Will generate:  Class 'C' used before its declaration.
// const instanceOfC = new C()

class C {}

Expected behavior:
Should generate: Class 'C' used before its declaration.

Actual behavior:
Explodes in runtime with 'is not a constructor' error.

Playground Link:
Playground
Repo

Related Issues:

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dal codice di riproduzione nel repository qballer/tsbug collegato e dall'esempio di TypeScript Playground, quindi confronta la diagnostica esistente per const instanceOfC = new C() con il caso getB(). Il lavoro è completato quando il compilatore segnala "Class 'C' used before its declaration" per la chiamata al costruttore invece di consentire l'errore a runtime "is not a constructor".

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
compilers
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.