microsoft / microsoft/TypeScript
TS Spec doesn't match implementation re method signature definitions
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
TS Spec § 3.9.5 says:
A method signature of the form
f < T1, T2, ... > ( p1, p2, ... ) : Ris equivalent to the property declaration
f : { < T1, T2, ... > ( p1, p2, ... ) : R }
But this is not the case with --strictFunctionTypes:
interface IFoo1 {
bar(baz?: number): void
}
class Foo1 implements IFoo1 {
bar: (baz: number) => void = (n) => void 0;
}
interface IFoo2 {
bar: { (baz?: number): void }
}
class Foo2 implements IFoo2 {
bar: (baz: number) => void = (n) => void 0; // err: Property 'bar' in type 'Foo2' is not assignable to the same property in base type 'IFoo2'.
}
I understand that the method bivarience in general is intentional as per the PR:
With this PR we introduce a --strictFunctionTypes mode in which function type parameter positions are checked contravariantly instead of bivariantly. The stricter checking applies to all function types, except those originating in method or construcor declarations
But it would be nice if the spec didn't state the syntaxes were equivalent when they aren't.
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
Ouvrez doc/spec.md à la §3.9.5 et comparez son affirmation d’équivalence avec l’exception de strictFunctionTypes décrite dans PR 18654. Mettez à jour la spécification afin que la distinction entre les déclarations de méthodes et les propriétés dont la valeur est une fonction soit documentée correctement, puis examinez les exemples de l’issue pour confirmer que la formulation correspond à leur comportement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers, documentation
- Type d'issue
- Documentation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 58/100