microsoft / microsoft/TypeScript
Computing constraint of conditional type by replacing contravariant infer variables with their constraints is unsound
Open
@ahejlsberg is already working on this.
Since Sep 7, 2018.
Bug
Domain: Conditional Types
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
TypeScript Version: master (8f654f0)
Search Terms:
conditional type assignability assignable constraint contravariant infer variable parameter unsound
Code
type Foo<A> = [A] extends [[infer B]] ? (arg: B) => void : never;
function fortyTwo<A>(x: Foo<A>) { x(42); }
fortyTwo<[string]>((arg: string) => console.log(arg.slice()));
Expected behavior: Compile error on x(42).
Actual behavior: Successful compilation and runtime error.
Playground Link: link
Related Issues: #26933
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.