声明当前模块为具有特定接口
我有在一个文件夹的一个项目,每一个模块应该有一个特定的接口:声明当前模块为具有特定接口
project/
modules/
A/index.ts
B/index.ts
C/index.ts
每个index.ts文件,应该坚持一定的界面。 事情是这样的:
export const foo = ...
export const bar = ...
我怎么能宣称每个index.ts文件必须导出某个接口? 换句话说,我需要告诉TypeScript,对于这些index.ts文件中的每一个,module.exports
都必须遵守某个接口。
我在Github上提交的问题,这与打字稿/ DefinitelyTyped:https://github.com/Microsoft/TypeScript/issues/19554
一般来说,指定模块必须实现目前尚不支持的类型,但如您在GitHub的建议,你可以使用一个约定您从中链接的问题。
嗯,它实际上可以处理导出表单,但是您使用的是无效的导出语法(export {} as MyInterface
),无论类型是否存在。
一种方式来写,这将是
export interface MyInterface {
id: number;
name:string
}
const m: MyInterface = {
id: 1
}
export = m;
我们可能会认为它更简洁的
export = {id: 1} as MyInterface;
这是有效的语法,但作为一个类型断言写的,而不是执行的要求,这样
export = {} as MyInterface;
typechecks以及。这使得第一种形式更可取。
谢谢,我会尝试一些你的建议,似乎现在已经足够了......你最后提到'export = {}是否为MyInterface;'工作?我尽量避免覆盖'module.exports'。 –
我认为使用'export default {}作为MyInterface'会更好,不是吗?然后将所有内容附加到默认值。或者像默认的其他属性。 –
是的,我宁愿强烈倾向'default',但是你想要_type_模块对象本身,这是最接近你可以得到,因为'default'只是一个带有语法糖的命名导出来导入它。它将使用默认值。然而,'as type'不起作用,因为它是一个类型断言而不是一个类型注释。这例如允许缺少属性。 –
也许我应该使用模块或命名空间?一直避免,直到现在或许... –
*建立他们一个监狱!* – naomik
是的,但如何大声笑感谢:) –