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
Inference for T[K] to U[Y] was supposedly introduced in #18391, however looking over the code, this case in inferTypes in checker.ts:
T[K]
U[Y]
inferTypes
checker.ts
else if (source.flags & TypeFlags.IndexedAccess && target.flags & TypeFlags.IndexedAccess) { inferFromTypes((<IndexedAccessType>source).objectType, (<IndexedAccessType>target).objectType); inferFromTypes((<IndexedAccessType>source).indexType, (<IndexedAccessType>target).indexType); }
is unreachable code. This is because the first if statement in the if-else if chain is
if
if-else if
if (target.flags & TypeFlags.TypeVariable) {
which is true when the target is TypeFlags.IndexedAccess, as TypeFlags.TypeVariable = TypeFlags.TypeParameter | TypeFlags.IndexedAccess.
target
TypeFlags.IndexedAccess
TypeFlags.TypeVariable = TypeFlags.TypeParameter | TypeFlags.IndexedAccess
TypeScript Version: 2.6.1-insiders.20171019 (current playground)
Code
declare function get<U, Y extends keyof U>(x: U, y: Y): U[Y]; declare function find<T, K extends keyof T>(o: T[K]): [T, K]; function impl<A, B extends keyof A>(a: A, b: B) { const item = get(a, b); return find(item); }
Expected behavior: impl has return type [A, B]
impl
[A, B]
Actual behavior: impl has return type [{}, never]
[{}, never]
The text was updated successfully, but these errors were encountered:
weswigham
No branches or pull requests
Inference for
T[K]
toU[Y]
was supposedly introduced in #18391, however looking over the code, this case ininferTypes
inchecker.ts
:is unreachable code.
This is because the first
if
statement in theif-else if
chain iswhich is true when the
target
isTypeFlags.IndexedAccess
, asTypeFlags.TypeVariable = TypeFlags.TypeParameter | TypeFlags.IndexedAccess
.TypeScript Version: 2.6.1-insiders.20171019 (current playground)
Code
Expected behavior:
impl
has return type[A, B]
Actual behavior:
impl
has return type[{}, never]
The text was updated successfully, but these errors were encountered: