From f07b69498eaa3f680c222cc0be081391977edd21 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 8 Jan 2026 15:13:05 -0800 Subject: [PATCH] Preallocate types slice in getLiteralTypeFromProperties --- internal/checker/checker.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index 0ef37ebeca6..c921129e8b5 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -25953,11 +25953,13 @@ func (c *Checker) getLiteralTypeFromProperties(t *Type, include TypeFlags, inclu if includeOrigin && t.objectFlags&(ObjectFlagsClassOrInterface|ObjectFlagsReference) != 0 || t.alias != nil { origin = c.newIndexType(t, IndexFlagsNone) } - var types []*Type - for _, prop := range c.getPropertiesOfType(t) { + props := c.getPropertiesOfType(t) + indexInfos := c.getIndexInfosOfType(t) + types := make([]*Type, 0, len(props)+len(indexInfos)) + for _, prop := range props { types = append(types, c.getLiteralTypeFromProperty(prop, include, false)) } - for _, info := range c.getIndexInfosOfType(t) { + for _, info := range indexInfos { if info != c.enumNumberIndexInfo && c.isKeyTypeIncluded(info.keyType, include) { if info.keyType == c.stringType && include&TypeFlagsNumber != 0 { types = append(types, c.stringOrNumberType)