【发布时间】:2016-10-22 00:38:03
【问题描述】:
我正在将 Angular 1.5 项目转换为 TypeScript,但在导入 angularTranslate 时遇到了问题。
我尝试像这样导入angular 和angular-translate:
import * as angular from "angular";
import * as angularTranslate from "angular-translate";
console.log(angular, angularTranslate);
我正在使用从DefinitelyTyped/angular-translate.d.ts 安装的类型。
当我使用 TypeScript 1.8 (module: "commonjs") 编译时,它会发出这个 JavaScript:
"use strict";
var angular = require("angular");
console.log(angular, angularTranslate);
如您所见,即使引用了 angularTranslate 导入,它也已删除,并且保留了类似使用的 angular 导入。这会导致运行时错误ReferenceError: angularTranslate is not defined。这适用于 Babel。我应该如何导入angularTranslate?
编辑:
这也不会发出任何信号:
import angularTranslate = require("angular-translate");
但这会发出预期的输出:
let angularTranslate = require("angular-translate");
angular-translate module 是否有问题导致无法在 TypeScript 中与import 一起使用?
【问题讨论】:
-
你试过普通的
import "angular-translate";(建议here)吗? -
我认为问题在于“angular-translate”模块导出了一个命名空间。
-
我没有尝试导入作为副作用,这可能会阻止导入被剥离,但是我无法引用导入的模块。
-
@AlekseyL。有趣,所以基本上打字是错误的?使用 Babel 时,我发现
import angularTranslate from "angular-translate"确实给了我预期的字符串"pascalprecht.translate"用于 angular 的依赖注入器,只是 TypeScript 没有通过编译步骤保留它。有解决办法吗? -
This pull request 似乎是我(和其他人)问题的根源。
标签: angularjs typescript typescript1.8