VScode API为什么我不能获得当前行?

时间:2018-04-17 23:35:33

标签: typescript visual-studio-code text-editor vscode-extensions

我正在使用typescript来编写vs代码扩展,由于某种原因我无法获得当前行。

我想要的功能是:

function makeFrame()
{
    vscode.window.activeTextEditor.selection.active.line;
}

哪个失败并出现错误:对象可能未定义 import语句是:

import {window, commands, Disposable, ExtensionContext, StatusBarAlignment, StatusBarItem, TextDocument} from 'vscode';

我做错了什么?

(我既是TypeScript的新手,又是为VS代码编写扩展名)

2 个答案:

答案 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;
}