We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TypeScript Version: 3.7.1-rc
Search Terms:
Code
export type GeMethodsForType<T, G extends string> = { [K in keyof T]: T[K] extends () => any ? { name: K, group: G, } : T[K] extends (s: infer U) => any ? { name: K, group: G, payload: U } : never }[keyof T]; class Sample { count = 0; books: { name: string, year: number }[] = [] increment() { this.count++ this.count++ } addBook(book: Sample["books"][0]) { this.books.push(book) } } export declare function testIt<T, G extends string>(): (input: any, method: GeMethodsForType<T, G>) => any const t = testIt<Sample, "Sample">() const i = t(null, { name: "addBook", group: "Sample", payload: { } }) // auto completion for payload
Expected behavior: Propeties of payload should come in autocompletion Actual behavior: No autocompletion Playground Link: play ground nightly
Working fine in 3.7 beta and 3.6.x
play ground 3.7 beta
Looks like its getting confused when some properties doesn't contain payload property in this case increment method , if i change GeMethodsForType to
payload
increment
export type GeMethodsForType<T, G extends string> = { [K in keyof T]: T[K] extends () => any ? { name: K, group: G, payload?:undefined} : T[K] extends (s: infer U) => any ? { name: K, group: G, payload: U } : never }[keyof T]; // payload added empty arg methods
now autocompletion working fine in 3.7.1-rc :s
The text was updated successfully, but these errors were encountered:
This is a regression due to #33937 😕
Simplified:
interface Sample { addBook: { name: string, year: number } } export declare function testIt<T>(method: T[keyof T]): any testIt<Sample>({ });
Sorry, something went wrong.
Update: fixed my simplified test case, but the original repro is still failing.
andrewbranch
Successfully merging a pull request may close this issue.
TypeScript Version: 3.7.1-rc
Search Terms:
Code
Expected behavior:
Propeties of payload should come in autocompletion
Actual behavior:
No autocompletion
Playground Link: play ground nightly
Working fine in 3.7 beta and 3.6.x
play ground 3.7 beta
Looks like its getting confused when some properties doesn't contain
payload
property in this caseincrement
method , if i change GeMethodsForType tonow autocompletion working fine in 3.7.1-rc :s
The text was updated successfully, but these errors were encountered: