1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
=== tests/cases/compiler/nestedCallbackErrorNotFlattened.ts ===
type Cb<T> = {noAlias: () => T}["noAlias"]; // `"noAlias"` here prevents an alias symbol from being made
>Cb : () => T
>noAlias : () => T
// which means the comparison will definitely be structural, rather than by variance
declare const x: Cb<Cb<Cb<Cb<number>>>>; // one more layer of `Cb` adn we'd get a `true` from the deeply-nested symbol check
>x : () => () => () => () => number
declare let y: Cb<Cb<Cb<Cb<string>>>>;
>y : () => () => () => () => string
y = x;
>y = x : () => () => () => () => number
>y : () => () => () => () => string
>x : () => () => () => () => number
|