[英]How to declare a module in TypeScript with an object as default export
在TypeScript项目中,我想使用不提供类型定义的第三方库。 因此,我需要提出自己的模块声明。 模块基本上导出的内容如下所示:
const foo = {
bar () {
return 23;
}
};
module.exports = foo;
因此,现在的问题是如何提出模块声明。 首先,很明显,该模块使用default
导出,而不是命名导出。 此默认导出是具有方法的对象。 所以我尝试了这个:
declare module 'foo' {
export default {
bar(): number;
};
}
但是,TypeScript编译器抱怨:
在环境上下文中,export语句的表达式必须是标识符或限定名称。
这是什么意思? 使用bar
,我使用了标识符,不是吗? “环境中的合格名称”是什么意思?
使用bar,我使用了标识符,不是吗?
错误是在谈论export子句的对象。 当您使用bar
作为标识符,特别是作为方法名称时,您没有在导出该标识符,而是在导出包含它的对象文字。
在
declare module 'foo' {
export default {bar(): number};
}
标识符bar
指的是导出值的方法,而不是导出值本身。
要更正此问题,请写
declare module 'foo' {
const foo: {bar(): number};
export default foo;
}
合格名称是通过用其包围范围对名称进行限定来引用的名称,如ab
declare module 'foo' {
namespace ns {
const foo: {bar(): number};
}
export default ns.foo;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.