網站搜尋

typescript - VScode API 為什麼我無法獲取當前行?


我正在使用 TypeScript 編寫 VS Code 擴展,但不知為何我無法獲取當前行。

我正在嘗試製作的函數是:

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

失敗並出現錯誤:物件可能未定義。導入語句為:

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

我做錯了什麼?

(我對 TypeScript 和為 VS Code 撰寫擴充功能都很陌生)

答案#1

activeTextEditor 可能是 undefined。這表示沒有活躍的編輯器,例如在你第一次打開新的工作區或關閉所有編輯器時會發生這種情況

要修復,只需添加一個快速檢查:

function makeFrame()
{
    const activeEditor = vscode.window.activeTextEditor;
    if (activeEditor) {
        activeEditor.selection.active.line;
    }
}

答案#2

物件可能未定義

因為可能有也可能沒有 activeEditor。

你可以進行明確的檢查:

function makeFrame() {
    const activeEditor = vscode.window.activeTextEditor;
    if (activeEditor != null) {
        activeEditor.selection.active.line;
    }
}

或者如果你確定,可以作為一種斷言:

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