📄 discriminateAnyType.ts
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 2 |
📦 Imports | 2 |
🎯 Enums | 1 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/type-utils/src/discriminateAnyType.ts
📦 Imports¶
Name | Source |
---|---|
isTypeAnyType |
./predicates |
isTypeAnyArrayType |
./predicates |
Functions¶
discriminateAnyType(type: ts.Type, checker: ts.TypeChecker, program: ts.Program, tsNode: ts.Node): AnyType
¶
Code
-
JSDoc:
-
Parameters:
type: ts.Type
checker: ts.TypeChecker
program: ts.Program
tsNode: ts.Node
- Return Type:
AnyType
- Calls:
discriminateAnyTypeWorker
discriminateAnyTypeWorker(type: ts.Type, checker: ts.TypeChecker, program: ts.Program, tsNode: ts.Node, visited: Set<ts.Type>): AnyType
¶
Code
function discriminateAnyTypeWorker(
type: ts.Type,
checker: ts.TypeChecker,
program: ts.Program,
tsNode: ts.Node,
visited: Set<ts.Type>,
) {
if (visited.has(type)) {
return AnyType.Safe;
}
visited.add(type);
if (isTypeAnyType(type)) {
return AnyType.Any;
}
if (isTypeAnyArrayType(type, checker)) {
return AnyType.AnyArray;
}
for (const part of tsutils.typeConstituents(type)) {
if (tsutils.isThenableType(checker, tsNode, part)) {
const awaitedType = checker.getAwaitedType(part);
if (awaitedType) {
const awaitedAnyType = discriminateAnyTypeWorker(
awaitedType,
checker,
program,
tsNode,
visited,
);
if (awaitedAnyType === AnyType.Any) {
return AnyType.PromiseAny;
}
}
}
}
return AnyType.Safe;
}
- Parameters:
type: ts.Type
checker: ts.TypeChecker
program: ts.Program
tsNode: ts.Node
visited: Set<ts.Type>
- Return Type:
AnyType
- Calls:
visited.has
visited.add
isTypeAnyType (from ./predicates)
isTypeAnyArrayType (from ./predicates)
tsutils.typeConstituents
tsutils.isThenableType
checker.getAwaitedType
discriminateAnyTypeWorker
Enums¶
enum AnyType
¶
Members¶
Name | Value | Description |
---|---|---|
Any |
auto | |
PromiseAny |
auto | |
AnyArray |
auto | |
Safe |
auto |