mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-17 01:49:57 -05:00
Revert "Merge pull request #7235 from weswigham/narrow-all-types"
This reverts commitef0f6c8fe4, reversing changes made to9f087cb62a.
This commit is contained in:
@@ -7662,7 +7662,7 @@ namespace ts {
|
||||
|
||||
function getFlowTypeOfReference(reference: Node, declaredType: Type, assumeInitialized: boolean, includeOuterFunctions: boolean) {
|
||||
let key: string;
|
||||
if (!reference.flowNode || assumeInitialized && (declaredType.flags & TypeFlags.NotNarrowable)) {
|
||||
if (!reference.flowNode || assumeInitialized && !(declaredType.flags & TypeFlags.Narrowable)) {
|
||||
return declaredType;
|
||||
}
|
||||
const initialType = assumeInitialized ? declaredType : addNullableKind(declaredType, TypeFlags.Undefined);
|
||||
|
||||
@@ -2218,13 +2218,7 @@ namespace ts {
|
||||
ObjectType = Class | Interface | Reference | Tuple | Anonymous,
|
||||
UnionOrIntersection = Union | Intersection,
|
||||
StructuredType = ObjectType | Union | Intersection,
|
||||
|
||||
// 'NotNarrowable' types are types where narrowing reverts to the original type, rather than actually narrow.
|
||||
// This is never really correct - you can _always_ narrow to an intersection with that type, _but_ we keep
|
||||
// Void as the only non-narrowable type, since it's a non-value type construct (representing a lack of a value)
|
||||
// and, generally speaking, narrowing `void` should fail in some way, as it is nonsensical. (`void` narrowing
|
||||
// to `void & T`, in a structural sense, is just narrowing to T, which we wouldn't allow under normal rules)
|
||||
NotNarrowable = Void,
|
||||
Narrowable = Any | ObjectType | Union | TypeParameter,
|
||||
/* @internal */
|
||||
RequiresWidening = ContainsUndefinedOrNull | ContainsObjectLiteral,
|
||||
/* @internal */
|
||||
|
||||
Reference in New Issue
Block a user