我正在使用typescript来编写vs代码扩展,由于某种原因我无法获得当前行。
我想要的功能是:
function makeFrame()
{
vscode.window.activeTextEditor.selection.active.line;
}
哪个失败并出现错误:对象可能未定义 import语句是:
import {window, commands, Disposable, ExtensionContext, StatusBarAlignment, StatusBarItem, TextDocument} from 'vscode';
我做错了什么?
(我既是TypeScript的新手,又是为VS代码编写扩展名)
答案 0 :(得分:3)
activeTextEditor
可能是undefined
。这表示没有活动编辑器,例如当您第一次打开新工作区或关闭所有编辑器时
要修复,只需添加一个快速检查:
function makeFrame()
{
const activeEditor = vscode.window.activeTextEditor;
if (activeEditor) {
activeEditor.selection.active.line;
}
}
答案 1 :(得分:1)
对象可能未定义
因为activeEditor
可能有也可能没有。{1}}。
您可以进行明确检查:
function makeFrame() {
const activeEditor = vscode.window.activeTextEditor;
if (activeEditor != null) {
activeEditor.selection.active.line;
}
}
如果您确定,可以assertion:
function makeFrame()
{
vscode.window.activeTextEditor!.selection.active.line;
}