File tree Expand file tree Collapse file tree 2 files changed +7
-20
lines changed Expand file tree Collapse file tree 2 files changed +7
-20
lines changed Original file line number Diff line number Diff line change @@ -20258,22 +20258,15 @@ namespace ts {
2025820258 * and no required properties, call/construct signatures or index signatures
2025920259 */
2026020260 function isWeakType(type: Type): boolean {
20261- if (!(type.flags & (TypeFlags.Object | TypeFlags.Intersection))) {
20262- return false;
20261+ if (type.flags & TypeFlags.Object) {
20262+ const resolved = resolveStructuredTypeMembers(type as ObjectType);
20263+ return resolved.callSignatures.length === 0 && resolved.constructSignatures.length === 0 && resolved.indexInfos.length === 0 &&
20264+ resolved.properties.length > 0 && every(resolved.properties, p => !!(p.flags & SymbolFlags.Optional));
2026320265 }
20264- if (!((type as ObjectType | IntersectionType).objectFlags & ObjectFlags.IsWeakTypeComputed)) {
20265- let isWeak;
20266- if (type.flags & TypeFlags.Object) {
20267- const resolved = resolveStructuredTypeMembers(type as ObjectType);
20268- isWeak = resolved.callSignatures.length === 0 && resolved.constructSignatures.length === 0 && resolved.indexInfos.length === 0 &&
20269- resolved.properties.length > 0 && every(resolved.properties, p => !!(p.flags & SymbolFlags.Optional));
20270- }
20271- else {
20272- isWeak = every((type as IntersectionType).types, isWeakType);
20273- }
20274- (type as ObjectType | IntersectionType).objectFlags |= ObjectFlags.IsWeakTypeComputed | (isWeak ? ObjectFlags.IsWeakType : 0);
20266+ if (type.flags & TypeFlags.Intersection) {
20267+ return every((type as IntersectionType).types, isWeakType);
2027520268 }
20276- return !!((type as ObjectType | IntersectionType).objectFlags & ObjectFlags.IsWeakType) ;
20269+ return false ;
2027720270 }
2027820271
2027920272 function hasCommonProperties(source: Type, target: Type, isComparingJsxAttributes: boolean) {
Original file line number Diff line number Diff line change @@ -5360,12 +5360,6 @@ namespace ts {
53605360 IsNeverIntersectionComputed = 1 << 25 , // IsNeverLike flag has been computed
53615361 /* @internal */
53625362 IsNeverIntersection = 1 << 26 , // Intersection reduces to never
5363-
5364- // Flags that require TypeFlags.Object or TypeFlags.Intersection
5365- /* @internal */
5366- IsWeakTypeComputed = 1 << 27 ,
5367- /* @internal */
5368- IsWeakType = 1 << 28 ,
53695363 }
53705364
53715365 /* @internal */
You can’t perform that action at this time.
0 commit comments