我有一些大类,它们的函数带有要重构的复杂返回对象。
class BigClass {
...
getReferenceInfo(word: string): { isInReferenceList:boolean, referenceLabels:string[] } {
...
}
}
我想做这样的事情(声明它接近我的功能):
class Foo {
...
type ReturnObject = { isInReferenceList:boolean, referenceLabels:string[] };
getReferenceInfo(word: string):ReturnObject {
...
}
}
但是现在Typescript只允许我在类外声明接口/类型:
type ReturnObject = { isInReferenceList:boolean, referenceLabels:string[] };
class Foo {
...
getReferenceInfo(word: string):ReturnObject {
...
}
}
有没有办法在Typescript中嵌套接口?
答案 0 :(得分:1)
如评论中所述,当前不支持此功能。有existing suggestion in GitHub支持允许class
充当类型声明的命名空间。如果您关心此功能,则可能需要转到GitHub问题并给它一个和/或描述用例(如果它特别引人注目)。
当前的解决方法是像这样使用declaration merging:
// separate namespace
// not close to your method either
namespace Foo {
// must export the type in question
export type ReturnObject = {
isInReferenceList: boolean,
referenceLabels: string[]
};
}
class Foo {
// must refer to the type as fully qualified by namespace
getReferenceInfo(word: string): Foo.ReturnObject {
return null!;
}
}
这显然不是完美的,如果您的用例是“使类型声明更接近使用它的方法”,这甚至不值得,但这甚至无法解决。
哦,希望能有所帮助。祝你好运!