microsoft / microsoft/TypeScript
Existential type?
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
Here's a case where I need a few existentials. It's for a definition file, where I need to have parameters for Binding and Scheduler, but it doesn't matter to me what they are. All I care about is that they're internally correct (and any doesn't cover this), and I'd rather not simulate it by making the constructor unnecessarily generic.
The alternative for me is to be able to declare additional constructor-specific type parameters that don't carry to other methods, but existentials would make it easier.
export interface Scheduler<Frame, Idle> {
nextFrame(func: () => any): Frame;
cancelFrame(frame: Frame): void;
nextIdle(func: () => any): Idle;
cancelIdle(frame: Idle): void;
nextTick(func: () => any): void;
}
export interface Binding<E> extends Component {
binding: E;
patchEnd?(): void;
patchAdd?(
prev: string | E | void,
next: string | E | void,
pos: number,
): void;
patchRemove?(
prev: string | E | void,
next: string | E | void,
pos: number
): void;
patchChange?(
oldPrev: string | E | void,
newPrev: string | E | void,
oldNext: string | E | void,
newNext: string | E | void,
oldPos: number,
newPos: number
): void;
}
export class Subtree {
constructor(
onError?: (err: Error) => any,
scheduler?: type<F, I> Scheduler<F, I>
);
// ...
}
export class Root extends Subtree {
constructor(
component: type<E> Binding<E>,
onError?: (err: Error) => any,
scheduler?: type<F, I> Scheduler<F, I>
);
// ...
}
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par les exemples de types existentiels dans l’issue. Aucun fichier source, test ou point d’entrée n’est indiqué ; identifiez donc d’abord les domaines du système de types de TypeScript et du traitement des déclarations concernés avant d’évaluer la conception. Le travail sera considéré comme terminé lorsque les paramètres existentiels demandés seront pris en charge tout en préservant les relations internes entre les types Binding et Scheduler.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 30/100