-
Notifications
You must be signed in to change notification settings - Fork 13k
Open
Labels
APIRelates to the public API for TypeScriptRelates to the public API for TypeScriptHelp WantedYou can do thisYou can do thisSuggestionAn idea for TypeScriptAn idea for TypeScript
Milestone
Description
TypeScript Version: 2.9.0-dev.20180426
While Traversing the TypeScript AST of a source file, there have been a number of helpful things I've found by extending ts.*
from typescript.d.ts
and I would like it if these could be exposed (or not marked /* @internal */
).
Search Terms:
typescript.d.ts
Node.locals
Symbol.parent
getContainingFunction
isAssignmentTarget
Code
declare namespace ts {
interface Node {
/* @internal */ readonly locals?: SymbolTable; // Locals associated with node (initialized by binding)
}
interface Symbol {
/* @internal */ readonly parent?: Symbol; // Parent symbol
}
function getContainingFunction(node: Node): SignatureDeclaration | undefined;
function isAssignmentTarget(node: Node): boolean;
}
Note:
- Added
readonly
forNode#locals
&Symbol#parent
- For
Symbol#parent
, the goal is: given the symbol for a method (e.g.,methodSymbol
forNumber#toString
) find where that method is defined (e.g.,Number
)... maybeprogram.getTypeChecker().getSymbolAtLocation(methodSymbol.valueDeclaration.parent)
is what is "supposed" to be used instead? - For
ts.getContainingFunction()
it seems more appropriate to have a return type ofSignatureDeclaration | undefined
instead ofSignatureDeclaration
Related Issues:
#15841
granmoe, Zemnmez and MuTsunTsai
Metadata
Metadata
Assignees
Labels
APIRelates to the public API for TypeScriptRelates to the public API for TypeScriptHelp WantedYou can do thisYou can do thisSuggestionAn idea for TypeScriptAn idea for TypeScript