在我的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死锁?
答案 0 :(得分:1)
根据您的问题,我推断navigator
是Navigator
类型的变量。从您发布的第一个错误,我猜测问题是(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。