【发布时间】:2017-03-20 07:44:50
【问题描述】:
我有这个 TypeScript 代码:
import * as suman from 'suman';
const Test = suman.init(module,{
ioc: {
a: 'foo',
b: 'far'
} as suman.Ioc
});
如您所见,我试图声明 ioc 对象的类型为 suman.Ioc(ioc 对象应“遵守 Ioc 接口”)。但是我的 IDE 说“找不到命名空间 'suman'”。
在这种情况下,我如何创建一个类型并在我的代码中引用它?如果可能的话,我希望能够从 suman 导入中引用 Ioc 对象类型。
换句话说,我不想在同一个文件中做这一切:
declare namespace suman {
interface Ioc {
a: string,
b: string
}
}
import * as suman from 'suman';
const Test = suman.init(module,{
ioc: {
a: 'foo',
b: 'far'
} as suman.Ioc
});
原因是因为我必须为每个这样的文件重复命名空间声明,这不应该是必要的(或建议的)。
【问题讨论】:
-
是否输入了
suman?如果没有,它没有Ioc接口,因此错误。 -
另外,不完全确定您想通过“尝试声明 ioc 对象的类型为 suman.Ioc”来实现什么。你能详细说明一下吗?
-
suman 是一个常规的 node.js 模块。我有一些类型定义,但显然它们不正确或位置错误。我正在尝试实现:如果对象具有 Ioc 接口中未定义的属性,则记录错误/警告。
-
tbh,这是我曾经在 SO 上问过的最令人困惑的问题之一。我很困惑,我正在努力让被问者尽可能容易地不要像我一样困惑,但不确定它是否有效。
-
"日志错误/警告..." 这只能在 IDE/编译时发生。这是你需要的吗?
标签: node.js typescript typescript2.0