Что делает `setTextRange` и когда это необходимо при написании преобразований TypeScript?

#typescript #abstract-syntax-tree

#typescript #абстрактное синтаксическое дерево

Вопрос:

Вот фрагмент, который я нашел в Интернете! Это изменяет SourceFile statements , но делает это с помощью setTextRange вызова, который я не понимаю, зачем он нужен или для чего он предназначен. Это не синтаксис…

 return ts.updateSourceFileNode(
  sf,
  ts.setTextRange(
    ts.createNodeArray([
      ...sf.statements.slice(0, firstHoistableNodeIndex   1),
      // Inject hoisted variables
      ...hoistedVariables,
      ...transformedStatements
    ]),
    sf.statements
  )
);
  

Комментарии:

1. Смотрите это для получения советов и рекомендаций относительно написания преобразований TypeScript

2. По-видимому, TypeScript внес некоторые изменения в некоторые из этих API совсем недавно.