Typescript VScode API为什么可以';我不知道现在的线路吗?

Typescript VScode API为什么可以';我不知道现在的线路吗?,typescript,visual-studio-code,text-editor,vscode-extensions,Typescript,Visual Studio Code,Text Editor,Vscode Extensions,我正在使用typescript编写vs代码扩展,由于某些原因,我无法获取当前行 我试图实现的功能是: function makeFrame() { vscode.window.activeTextEditor.selection.active.line; } 操作失败,出现错误:对象可能未定义 进口声明如下: import {window, commands, Disposable, ExtensionContext, StatusBarAlignment, StatusBarItem

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

我试图实现的功能是:

function makeFrame()
{
    vscode.window.activeTextEditor.selection.active.line;
}
操作失败,出现错误:对象可能未定义 进口声明如下:

import {window, commands, Disposable, ExtensionContext, StatusBarAlignment, StatusBarItem, TextDocument} from 'vscode';
我做错了什么


(我对打字脚本和编写VS代码扩展都是新手)

activeTextEditor
可能是
未定义的
。这表示没有活动的编辑器,例如,当您第一次打开新工作区或关闭所有编辑器时,将发生这种情况

要解决此问题,只需添加一个快速检查:

function makeFrame()
{
    const activeEditor = vscode.window.activeTextEditor;
    if (activeEditor) {
        activeEditor.selection.active.line;
    }
}
对象可能未定义

因为可能有也可能没有
activeEditor

您可以执行显式检查:

function makeFrame() {
    const activeEditor = vscode.window.activeTextEditor;
    if (activeEditor != null) {
        activeEditor.selection.active.line;
    }
}
或者,如果您确定:

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