📄 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.Typechecker: ts.TypeCheckerprogram: ts.ProgramtsNode: 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.Typechecker: ts.TypeCheckerprogram: ts.ProgramtsNode: ts.Nodevisited: Set<ts.Type>- Return Type:
AnyType - Calls:
visited.hasvisited.addisTypeAnyType (from ./predicates)isTypeAnyArrayType (from ./predicates)tsutils.typeConstituentstsutils.isThenableTypechecker.getAwaitedTypediscriminateAnyTypeWorker
Enums¶
enum AnyType¶
Members¶
| Name | Value | Description |
|---|---|---|
Any |
auto | |
PromiseAny |
auto | |
AnyArray |
auto | |
Safe |
auto |