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’
