命名空间中对外部模块的Typescript引用
我试图在我的命名空间“公司.控制器”中引用外部模块“时刻””命名空间中对外部模块的Typescript引用,typescript,momentjs,typescript-typings,Typescript,Momentjs,Typescript Typings,我试图在我的命名空间“公司.控制器”中引用外部模块“时刻”” namespace company.controllers { import { moment } from 'moment'; 'use strict' export class WidgetAdminDailyStatisticController extends Controller<company.data.AdminDailyStatisticViewModel> {
namespace company.controllers {
import { moment } from 'moment';
'use strict'
export class WidgetAdminDailyStatisticController extends Controller<company.data.AdminDailyStatisticViewModel> {
customRepository: company.data.CustomRepository;
searchDate: Date;
static $inject: Array<string> = [
'CustomRepository'
];
constructor(
customRepository: company.data.CustomRepository
) {
super();
this.customRepository = customRepository;
}
initialize(): void {
this.searchDate = new Date();
//let a: moment = new moment();
}
}
}
名称空间company.controllers{
从“矩”导入{moment};
“严格使用”
导出类WidgetAdminDailyStatisticController扩展控制器{
customRepository:company.data.customRepository;
搜索日期:日期;
静态$inject:数组=[
“自定义存储库”
];
建造师(
customRepository:company.data.customRepository
) {
超级();
this.customRepository=customRepository;
}
初始化():无效{
this.searchDate=新日期();
//设a:力矩=新力矩();
}
}
}
我得到“命名空间中的导入声明不能引用模块”
如何导入moment并在我的typescript中使用?您可以在命名空间之外导入它:
import { moment } from 'moment';
namespace company.controllers {
// ...
}
。。。但不能在非模块脚本中导入模块。如果您的命名空间不在模块中,则不可能。解决方案是使用矩作为全局变量,并为该全局变量查找(或写入)另一个定义文件。当我将其移到名称空间之外时,它可以工作。但我在“控制器”上出错了。1.“控制器”下的卷曲线。错误消息:“找不到名称控制器”2。“company.data”下的卷线。错误消息:“命名空间“company”没有导出的成员数据”。这两种方法以前都很好用。不能在非模块脚本中导入模块。如果名称空间不在模块中,则不可能。解决方法是将矩作为全局变量,我找到了一种方法。通过在类型定义文件中注释掉“export=moment”。抱歉,我无法验证您的版本,因为它是针对moment的黑客攻击。你需要的是暂时的休息。我不知道它是否在
时刻存在。通过删除定义文件中的行export=moment
,可以使定义文件环境化。但这种黑客行为取决于定义文件的编写方式,并且它不是“从名称空间引用外部模块”的通用解决方案。但是,您的解决方案适合您,这是最重要的。:)我的错。正确的术语不是环境术语,而是全局术语。