microsoft / microsoft/TypeScript
Weak type not rejected when intersected with `ThisType`
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
🔎 Search Terms
- function overload
- ThisType
- this
🕗 Version & Regression Information
- This is a crash
⏯ Playground Link
💻 Code
interface Foo {
a: string
}
declare function fun0(arg: () => (
& Foo
& ThisType<Foo>
)): void
declare function fun0(arg: (
& Partial<Foo>
& ThisType<Foo>
)): void
fun0({
// ^? function fun0(arg: (Partial<Foo> & ThisType<Foo>)): void (+1 overload)
a: '1'
})
fun0(() => ({
// ^? function fun0(arg: () => (Foo & ThisType<Foo>)): void (+1 overload)
a: '1'
}))
// @ts-expect-error
fun0(() => ({
// ^? function fun0(arg: (Partial<Foo> & ThisType<Foo>)): void (+1 overload)
a: 1
}))
When I intersect ThisType with a type similar to {} and use it as a function argument, it will always resolve to this declaration.
🙁 Actual behavior
overload to function fun0(arg: (Partial<Foo> & ThisType<Foo>)): void (+1 overload)
🙂 Expected behavior
overload to function fun0(arg: () => (Partial<Foo> & ThisType<Foo>)): void (+1 overload)
Additional information about the issue
When I comment ThisType intesection, it works.
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 l’exemple TypeScript Playground lié et reproduisez le comportement de résolution de surcharge impliquant ThisType, Foo et Partial. Suivez la gestion par le compilateur des intersections avec ThisType et des arguments de fonction ; le travail est terminé lorsque le troisième appel est rejeté et que la surcharge inférée correspond au type de fonction attendu sans plantage.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100