@@ -4929,7 +4929,7 @@ namespace ts {
4929
4929
}
4930
4930
4931
4931
function resolveBaseTypesOfClass(type: InterfaceType): void {
4932
- type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray;
4932
+ type.resolvedBaseTypes = emptyArray;
4933
4933
const baseConstructorType = getApparentType(getBaseConstructorTypeOfClass(type));
4934
4934
if (!(baseConstructorType.flags & (TypeFlags.Object | TypeFlags.Intersection | TypeFlags.Any))) {
4935
4935
return;
@@ -4976,17 +4976,12 @@ namespace ts {
4976
4976
error(baseTypeNode.expression, Diagnostics.Base_constructor_return_type_0_is_not_a_class_or_interface_type, typeToString(baseType));
4977
4977
return;
4978
4978
}
4979
- if (type === baseType || hasBaseType(<BaseType> baseType, type)) {
4979
+ if (type === baseType || hasBaseType(baseType, type)) {
4980
4980
error(valueDecl, Diagnostics.Type_0_recursively_references_itself_as_a_base_type,
4981
4981
typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType));
4982
4982
return;
4983
4983
}
4984
- if (type.resolvedBaseTypes === emptyArray) {
4985
- type.resolvedBaseTypes = [<ObjectType>baseType];
4986
- }
4987
- else {
4988
- type.resolvedBaseTypes.push(<ObjectType>baseType);
4989
- }
4984
+ type.resolvedBaseTypes = [baseType];
4990
4985
}
4991
4986
4992
4987
function areAllOuterTypeParametersApplied(type: Type): boolean {
@@ -5003,7 +4998,7 @@ namespace ts {
5003
4998
5004
4999
// A valid base type is `any`, any non-generic object type or intersection of non-generic
5005
5000
// object types.
5006
- function isValidBaseType(type: Type): boolean {
5001
+ function isValidBaseType(type: Type): type is BaseType {
5007
5002
return type.flags & (TypeFlags.Object | TypeFlags.NonPrimitive | TypeFlags.Any) && !isGenericMappedType(type) ||
5008
5003
type.flags & TypeFlags.Intersection && !forEach((<IntersectionType>type).types, t => !isValidBaseType(t));
5009
5004
}
@@ -5016,12 +5011,12 @@ namespace ts {
5016
5011
const baseType = getTypeFromTypeNode(node);
5017
5012
if (baseType !== unknownType) {
5018
5013
if (isValidBaseType(baseType)) {
5019
- if (type !== baseType && !hasBaseType(<BaseType> baseType, type)) {
5014
+ if (type !== baseType && !hasBaseType(baseType, type)) {
5020
5015
if (type.resolvedBaseTypes === emptyArray) {
5021
5016
type.resolvedBaseTypes = [<ObjectType>baseType];
5022
5017
}
5023
5018
else {
5024
- type.resolvedBaseTypes.push(<ObjectType> baseType);
5019
+ type.resolvedBaseTypes.push(baseType);
5025
5020
}
5026
5021
}
5027
5022
else {
0 commit comments