mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-30 11:24:49 -05:00
Fixed inference between type placeholders with non-string constraints in template literal types (#57808)
This commit is contained in:
committed by
GitHub
parent
6086292f66
commit
a46664ac64
@@ -25532,7 +25532,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
function inferTypesFromTemplateLiteralType(source: Type, target: TemplateLiteralType): Type[] | undefined {
|
||||
return source.flags & TypeFlags.StringLiteral ? inferFromLiteralPartsToTemplateLiteral([(source as StringLiteralType).value], emptyArray, target) :
|
||||
source.flags & TypeFlags.TemplateLiteral ?
|
||||
arraysEqual((source as TemplateLiteralType).texts, target.texts) ? map((source as TemplateLiteralType).types, getStringLikeTypeForType) :
|
||||
arraysEqual((source as TemplateLiteralType).texts, target.texts) ? map((source as TemplateLiteralType).types, (s, i) => {
|
||||
return isTypeAssignableTo(getBaseConstraintOrType(s), getBaseConstraintOrType(target.types[i])) ? s : getStringLikeTypeForType(s);
|
||||
}) :
|
||||
inferFromLiteralPartsToTemplateLiteral((source as TemplateLiteralType).texts, (source as TemplateLiteralType).types, target) :
|
||||
undefined;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user