Microsoft/TypeScript
在 GitHub 查看Weak type not rejected when intersected with `ThisType`
Open
#56,995 创建于 2024年1月9日
BugDomain: This-TypingHelp Wanted
仓库指标
- Star
- (48,455 star)
- PR 合并指标
- (平均合并 6天 17小时) (30 天内合并 9 个 PR)
描述
🔎 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.