Skip to content

Commit b95ad97

Browse files
committed
Consistently check assignability to template literal placeholders
1 parent 2869579 commit b95ad97

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/compiler/checker.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25017,12 +25017,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2501725017
}
2501825018

2501925019
function isValidTypeForTemplateLiteralPlaceholder(source: Type, target: Type): boolean {
25020-
if (source === target || target.flags & (TypeFlags.Any | TypeFlags.String)) {
25021-
return true;
25022-
}
2502325020
if (target.flags & TypeFlags.Intersection) {
2502425021
return every((target as IntersectionType).types, t => t === emptyTypeLiteralType || isValidTypeForTemplateLiteralPlaceholder(source, t));
2502525022
}
25023+
if (target.flags & TypeFlags.String || isTypeAssignableTo(source, target)) {
25024+
return true;
25025+
}
2502625026
if (source.flags & TypeFlags.StringLiteral) {
2502725027
const value = (source as StringLiteralType).value;
2502825028
return !!(target.flags & TypeFlags.Number && isValidNumberString(value, /*roundTripOnly*/ false) ||
@@ -25035,7 +25035,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2503525035
const texts = (source as TemplateLiteralType).texts;
2503625036
return texts.length === 2 && texts[0] === "" && texts[1] === "" && isTypeAssignableTo((source as TemplateLiteralType).types[0], target);
2503725037
}
25038-
return isTypeAssignableTo(source, target);
25038+
return false;
2503925039
}
2504025040

2504125041
function inferTypesFromTemplateLiteralType(source: Type, target: TemplateLiteralType): Type[] | undefined {

0 commit comments

Comments
 (0)