У меня такая же ситуация, когда я хочу разрешить оператор return на глобальном уровне, потому что мой скрипт - это «функция».
Typescript помечает возвращение как ошибку с помощью оператора «return» можно использовать только в теле функции. '
Решение, которое я нашел, состоит в том, чтобы фильтровать маркеры модели. Это ужасно из-за совпадения строк, но это работает. В пользовательском интерфейсе появляется небольшое мерцание, когда украшение появляется, а затем сразу исчезает.
После создания редактора подпишитесь на изменения оформления:
this.editor.onDidChangeModelDecorations( e => this.onDidChangeModelDecorations(e) )
Куда вы идете и получите текущие маркеры, отфильтруйте их и поместите обратно в редактор:
onDidChangeModelDecorations(e: monaco.editor.IModelDecorationsChangedEvent)
{
let model = this.editor.getModel()
let markers = monaco.editor.getModelMarkers( { owner:'typescript', resource: model.uri} )
// We have to filter out the error that the editor gives on global returns.
// Unfortunately the error code is null in the marker, so we have option but to
// match on the text of the error.
// It will be obvious if this regresses.
let filtered = markers.filter( marker => marker.message != "A 'return' statement can only be used within a function body." )
if (filtered.length != markers.length)
{
monaco.editor.setModelMarkers(model, 'typescript', filtered)
}
}
Надеюсь, мы сможем получить коды ошибок, которые будут соответствовать в будущем.
В маркере может быть больше информации, которую вы могли бы лучше отфильтровать, взглянуть на объект маркера в отладчике.