📄 discriminateAnyType¶
📊 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¶
Returns: undefined
AnyType.Any if the type is any, AnyType.AnyArray if the type is any[] or readonly any[], AnyType.PromiseAny if the type is Promise<any>,
otherwise it returns AnyType.Safe.
Raw JSDoc
Calls:
discriminateAnyTypeWorker
Code
discriminateAnyTypeWorker(type: ts.Type, checker: ts.TypeChecker, program: ts.Program, tsNode: ts.Node, visited: Set<ts.Type>): AnyType¶
Parameters:
typets.Typecheckerts.TypeCheckerprogramts.ProgramtsNodets.NodevisitedSet<ts.Type>
Returns: AnyType
Calls:
visited.hasvisited.addisTypeAnyType (from ./predicates)isTypeAnyArrayType (from ./predicates)tsutils.typeConstituentstsutils.isThenableTypechecker.getAwaitedTypediscriminateAnyTypeWorker
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;
}
Enums¶
enum AnyType¶
Members¶
| Name | Value | Description |
|---|---|---|
Any |
auto | not shown |
PromiseAny |
auto | not shown |
AnyArray |
auto | not shown |
Safe |
auto | not shown |
Generated by Syntax Scribe