网站搜索

javascript - 类型错误:navigator.currentLang 不是一个函数


我正在使用 Ionic 2 开发一个移动应用程序。以下是我的 Ionic 安装信息:

  • Cordova CLI:6.3.1
  • Ionic 框架版本:2.0.0-rc.4
  • Ionic CLI 版本:2.1.18
  • Ionic 应用库版本:2.1.9
  • Ionic 应用脚本版本:0.0.47
  • ios-deploy 版本:未安装
  • ios-sim 版本:未安装
  • 操作系统:Windows 10
  • 节点版本:v6.9.2
  • Xcode 版本:未安装

我有一个 extension.ts 文件,其中包含 TypeScript/JavaScript 预定义类型的各种扩展,包括以下类:

export {};

declare global {
    interface Navigator {
        currentLang() : string;
    }
}

Navigator.prototype.currentLang = function() {
    var userLang = navigator.language.split('-')[0];
    userLang = /(en|it)/gi.test(userLang) ? userLang : 'en';
    return userLang;
};

当我运行命令 ionic serve 时,谷歌开发者控制台显示以下错误:

TypeError: navigator.currentLang is not a function

可能是什么问题呢?我是不是忘了什么?

答案#1

这段代码的编译输出:

import { } from '../extensions';
console.log(navigator.currentLang());

假设默认模块选项是:

console.log(navigator.currentLang());

js 文件中没有 import,所以当你尝试在浏览器中运行它时,它不会加载 ../extensions.js,因此 navigator.currentLang 是未定义的。
这是因为你实际上并没有从模块中导入任何内容。

其语法为:

import '../extensions';
console.log(navigator.currentLang());

编译为:

require("../extensions");
console.log(navigator.currentLang());