-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
BugA bug in TypeScriptA bug in TypeScriptFixedA PR has been merged for this issueA PR has been merged for this issue
Milestone
Description
TypeScript Version: 3.2.2 and 3.3.0-dev.20190119
Search Terms: arrow function method object literal
Code
type Test<K extends keyof any> = {
[P in K | "foo"]: P extends "foo" ? true : () => any
}
function test<T extends Test<keyof T>>(arg: T) {
return arg;
}
const res1 = test({
foo: true,
bar() {
// Notice the type param of `test` is inferred as `Test<never>`
}
})
const res2 = test({
foo: true,
bar: function () {
// Same error here.
}
})
const res3 = test({
foo: true,
bar: () => {
// This is fine.
}
})Expected behavior: The first two test calls should infer the given object type correctly.
Actual behavior: They instead infer the object type as Test<never>. 😢
Playground Link: Click here
Related Issues: #17867 (sort of)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScriptFixedA PR has been merged for this issueA PR has been merged for this issue