Microsoft/TypeScript
Ver no GitHubUnexpected circular reference error TS7022
Open
#50.200 aberto em 5 de ago. de 2022
BugDomain: check: Type CircularityHelp Wanted
Métricas do repositório
- Stars
- (48.455 stars)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (9 fundiu PRs em 30d)
Description
Bug Report
🔎 Search Terms
TS7022
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about
TS7022
⏯ Playground Link
💻 Code
/** @template T */
class GenericClass {
/**
* @param {(data: T) => void} handler
*/
setHandler(handler) {
}
}
/** @type {GenericClass<typeof handlers>} */
const theClass = new GenericClass();
theClass.setHandler(() => {});
function emptyFunction() {}
const handlers = {
thisWorksFine: emptyFunction,
thisDoesnt: console.log,
};
🙁 Actual behavior
'theClass' is referenced directly or indirectly in its own type annotation, happens only in the JavaScript equivalent of this code and only if an external type is included in the handlers object.
Uncommenting thisDoesnt: console.log seems to remove the type errors for some reason.
theClass.setHandler(() => {}); also seems to be required for this
🙂 Expected behavior
No error, because there is no error in the TypeScript equivalent either.