【问题标题】:Typescript: Navigator merging with lib.d.ts打字稿:导航器与 lib.d.ts 合并
【发布时间】:2017-03-15 21:21:33
【问题描述】:

我对与 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 声明合并?

谢谢

【问题讨论】:

  • 您是否真的通过编译器/IDE 加载了包含interface Navigator 的文件?尝试在文件头中添加指向包含Interface Navigator 的文件的链接,其中扩展对象被/// <reference path="Navigator.ts" /> 之类的注释使用。 Playground 也不会突出显示错误。

标签: typescript typescript-typings typescript2.0


【解决方案1】:

原来我没有意识到我必须创建一个包含接口的 navigator.d.ts 文件。在我的项目中创建该文件后,错误就消失了。

我不需要使用 ///

【讨论】:

    【解决方案2】:

    创建类型定义文件的另一种方法是使用字符串文字访问“userLanguage”属性,如下所示:

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

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2020-03-16
      • 2020-11-11
      • 2022-11-25
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      相关资源
      最近更新 更多