Skip to content

Result References ​

The return value of Twoslash contains the following information:

ts
export interface TwoslashReturn {
  /** The output code, could be TypeScript, but could also be a JS/JSON/d.ts. */
  
code
: string
/** Nodes containing various bits of information about the code. */
nodes
:
TwoslashNode
[]
/** The meta information the twoslash run. */
meta
: TwoslashReturnMeta
/** Getters shorthand. */ get
queries
(): NodeQuery[]
get
completions
(): NodeCompletion[]
get
errors
(): NodeError[]
get
highlights
(): NodeHighlight[]
get
hovers
(): NodeHover[]
get
tags
(): NodeTag[]
}
ts
import type { NodeCompletion, NodeError, NodeHighlight, NodeHover, NodeQuery, NodeTag, TwoslashNode, TwoslashReturnMeta } from 'twoslash'
// ---cut---
export interface TwoslashReturn {
  /** The output code, could be TypeScript, but could also be a JS/JSON/d.ts. */
  code: string
  /** Nodes containing various bits of information about the code. */
  nodes: TwoslashNode[]
  /** The meta information the twoslash run. */
  meta: TwoslashReturnMeta
  /** Getters shorthand. */
  get queries(): NodeQuery[]
  get completions(): NodeCompletion[]
  get errors(): NodeError[]
  get highlights(): NodeHighlight[]
  get hovers(): NodeHover[]
  get tags(): NodeTag[]
}

Check the type definition for all the fields.

Information Nodes ​

Twoslash returns all types of information in the nodes array. Check the type definition for all the fields.

Properties ​

Nodes provide the following common properties:

  • type: the type of the node. Can be hover, query, error, tag, highlight or completion
    • was kind in @typescript/twoslash for some entries
  • start: the 0-indexed start position of the node in the output code
  • line: a 0-indexed line number of the node in the output code
  • character: a 0-indexed character number of the node in the output code
    • was offset in @typescript/twoslash for some entries
  • length: length of the node

For different types of nodes, they have some extra properties:

Type hover ​

  • text: the text of the hover, usually the type information of the given node
  • docs: the jsdoc of the given node, can be undefined

Type query ​

Same as hover

Type highlight ​

  • text: the extra annotation text of the highlight, can be undefined

Type completion ​

  • completion: the completion entries
  • completionPrefix: the prefix of the completion

Type error ​

  • text: the error message
    • was renderedMessage in @typescript/twoslash
  • level: the error level
    • was category in @typescript/twoslash
  • code: TypeScript error code
  • id: a generated based on the code and position of the error

Type tag ​

  • text: the text of the tag
    • was annotation in @typescript/twoslash

Getters ​

To make it easier to access, we also provide some getters shortcuts to each type of the nodes:

ts
import type { NodeCompletion, NodeError, NodeHighlight, NodeHover, NodeQuery, NodeTag, TwoslashNode, TwoslashReturnMeta } from 'twoslash'
// ---cut---
export interface TwoslashReturn {
  nodes: TwoslashNode[]

  get hovers(): NodeHover[] // was `staticQuickInfos`
  get queries(): NodeQuery[] // was `queries` with `kind: 'query'`
  get completions(): NodeCompletion[] // was `queries` with `kind: 'completion'`
  get errors(): NodeError[]
  get highlights(): NodeHighlight[]
  get tags(): NodeTag[]
  // ....
}

Meta Information ​

An additional meta property is returned providing additional information about the result. Check the type definition for all the fields.

meta.flagNotations ​

The list of options flag notation that is detected from the code.

meta.removals ​

A list of the index ranges of the code removed by Twoslash from the original code, useful for better source mapping.

meta.compilerOptions ​

The final resolved compilerOptions.

meta.handbookOptions ​

The final resolved handbookOptions.

Released under the MIT License.