TypeScript - 重复标识符

时间:2016-11-29 20:40:03

标签: typescript

在我的TypeScript 2.0代码中(在Visual Studio 2015中),我有:

var lang = navigator.language 
         ? navigator.language 
         : navigator.systemLanguage;

有了这个,我收到了这个错误:

Build:Property 'systemLanguage' does not exist on type 'Navigator'.

但是,如果我将其添加到我的一个d.ts文件中:

interface Navigator {
  systemLanguage: string;
}

然后我得到:

TS2300  Duplicate identifier 'systemLanguage'.

如何打破此TypeScript死锁?

2 个答案:

答案 0 :(得分:1)

根据您的问题,我推断navigatorNavigator类型的变量。从您发布的第一个错误,我猜测问题是(1)Navigator接口没有名为systemLanguage的属性或(2)您没有指定{{1} 1}}在您的代码文件中是navigator类型。从您发布的第二个错误中,我相当确定您的问题是由问题(2)引起的。

由于Typescript编译了所有的.ts文件,当你添加Navigator属性的Navigator接口时,它发现已经有另一个具有相同名称和相同属性的接口,因此第二个错误。

我认为您需要做的是(1)找到定义systemLanguage的位置,(2)将该定义导入包含您首先引用的代码的文件中,以及(3)键入{{1} }为Navigation类型。

编辑:这是一个例子:

navigator

答案 1 :(得分:1)

Navigator在lib.d.ts中定义。 systemLanguage不再是Navigator界面的属性。点击这里 https://github.com/Microsoft/TypeScript/blob/master/lib/lib.d.ts

看起来像2016年4月11日的提交删除了systemLanguage。