網站搜尋

Typescript:Navigator 與 lib.d.ts 合併


我對與 lib.d.ts 合併感到困惑。我正在嘗試向 Navigator 添加一個屬性。我認為我需要與在 lib.d.ts 中聲明的 Navigator 介面合併。我使用的是 TS 2.0.6。

這是我的程式碼:

let lang = navigator.language || navigator.userLanguage; 

這會產生這個錯誤:

屬性 'userLanguage' 在類型 'Navigator' 上不存在。

我已經嘗試過用這種方式進行合併:

interface Navigator {
    userLanguage: string;
}

但是,仍然找不到 userLanguage 屬性……

有人可以幫我理解我可以在哪裡以及如何與 lib.d.ts 的宣告合併嗎?

謝謝

答案#1

結果我沒有意識到我必須創建一個包含介面的 navigator.d.ts 文件。一旦在我的專案中創建了該文件,錯誤就消失了。

我不需要使用 ///< 參考...

答案#2

創建類型定義文件的替代方法,如同被接受的答案,是使用字串字面量來訪問「userLanguage」屬性,如下所示:

navigator['userLanguage'] //=> OK

navigator.userLanguage //=> TS2339: Property ‘userLanguage’ does not exist on type ‘Navigator’