microsoft / microsoft/TypeScript
Separate type application from function application
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
As discussed in #28931, currently the type application for the function with generic parameters is tied to that function application.
Specialize the value of the function with generics is only possible during the call. So the following compiles fine:
function id<V> (v : V) { return v }
const some : Date = id<Date>(new Date())
But this does not:
function id<V> (v : V) { return v }
type IdDate = typeof id<Date> // TS1005: ';' expected
const dateId = id<Date> // TS1109: Expression expected.
It would be very beneficial to separate type application from function application. For example (the original reason of this request), it will allow mixins with generic parameters:
export type Constructable<T extends any> = new (...args : any[]) => T
export type AnyFunction = (...input: any[]) => any
export type Mixin<T extends AnyFunction> = InstanceType<ReturnType<T>>
export const Atom = <V, T extends Constructable<Object>>(base : T) =>
class Atom extends base {
value : V
hasValue () : boolean {
return this.hasOwnProperty('value')
}
}
export type Atom = Mixin<typeof Atom> // this currently works, but does not have generic argument
export type Atom<V> = Mixin<typeof Atom<V>> // this is the goal
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Leggi prima la discussione in issue #28931, quindi usa gli esempi qui riportati per identificare la sintassi prevista e la sua interazione con le funzioni generiche, le query sui tipi e i mixin. Il lavoro è concluso quando l'applicazione di tipo proposta può essere usata indipendentemente da una chiamata di funzione e gli esempi mostrati vengono compilati come previsto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 25/100