网站搜索

Typescript:Navigator 与 lib.d.ts 合并


我对与 lib.d.ts 合并感到困惑。我正在尝试向 Navigator 添加一个属性。我认为我需要与在 lib.d.ts 中声明的 Navigator 接口合并。我正在使用 TS 2.0.6。

这是我的代码:

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

这会产生此错误:

类型 'Navigator' 上不存在属性 'userLanguage'。

我尝试过用这种方式进行合并:

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’

相关文章