From aca1ab3bfe485ad27d7e21d240f29bcf31fd380a Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 10 Nov 2016 10:41:17 -0800 Subject: [PATCH] Check mapped type constraint is assignable to string | number --- src/compiler/checker.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8f7d8aa0d6..8aa9a03da0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15316,11 +15316,12 @@ namespace ts { } function checkMappedType(node: MappedTypeNode) { - getTypeFromMappedTypeNode(node); - // const type = getTypeFromMappedTypeNode(node); - // const constraintType = getConstraintTypeFromMappedType(type); - // const keyType = constraintType.flags & TypeFlags.TypeParameter ? getApparentTypeOfTypeParameter(constraintType) : constraintType; - // checkTypeAssignableTo(keyType, stringOrNumberType, node.typeParameter.constraint); + checkSourceElement(node.typeParameter); + checkSourceElement(node.type); + const type = getTypeFromMappedTypeNode(node); + const constraintType = getConstraintTypeFromMappedType(type); + const keyType = constraintType.flags & TypeFlags.TypeParameter ? getApparentTypeOfTypeParameter(constraintType) : constraintType; + checkTypeAssignableTo(keyType, stringOrNumberType, node.typeParameter.constraint); } function isPrivateWithinAmbient(node: Node): boolean {