Microsoft/TypeScript
View on GitHubError elaboration says nothing due to circularity
Open
#54,921 opened on Jul 7, 2023
Experience EnhancementHelp WantedSuggestion
Repository metrics
- Stars
- (48,455 stars)
- PR merge metrics
- (Avg merge 6d 17h) (9 merged PRs in 30d)
Description
Bug Report
⏯ Playground Link
Playground link with relevant code
💻 Code
// @target: esnext
export interface ReadonlySparseArray<T> {
slice(start?: number, end?: number): SparseArray<T>;
every<S extends T>(
predicate: (value: T, index: number) => value is S,
): this is ReadonlySparseArray<S>;
flatMap<U>(callback: (value: T, index: number) => U | readonly U[] | ReadonlySparseArray<U>): U[];
}
export interface SparseArray<T> extends ReadonlySparseArray<T> {}
const _a: ReadonlySparseArray<string> = ['a'];
const _b: SparseArray<string> = ['a'];
🙁 Actual behavior
_b:
Type 'string[]' is not assignable to type 'SparseArray<string>'.
Types of property 'slice' are incompatible.
Type '(start?: number | undefined, end?: number | undefined) => string[]' is not assignable to type '(start?: number | undefined, end?: number | undefined) => SparseArray<string>'.ts(2322)
In trying to tell you why string[] is not assignable to SparseArray<string>, the elaboration references two signatures which are identical except for their return types: string[] and SparseArray<string>, which lands you right back where you started.
This particular example occurs in #50351, which is a separately buggy behavior, so this repro may stop reproing if that gets fixed.