gpt4 book ai didi

typescript - [嵌套接口(interface)/类型] : How to declare function return types inside a class in Typescript?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:45 24 4
gpt4 key购买 nike

我有一些大类,其中包含我想要重构的复杂返回对象的函数。

class BigClass {
...
getReferenceInfo(word: string): { isInReferenceList:boolean, referenceLabels:string[] } {
...
}
}

我想做这样的事情(在我的函数附近声明它):

class Foo {
...
type ReturnObject = { isInReferenceList:boolean, referenceLabels:string[] };
getReferenceInfo(word: string):ReturnObject {
...
}
}

但是现在 Typescript 只允许我在类之外声明接口(interface)/类型:

type ReturnObject = { isInReferenceList:boolean, referenceLabels:string[] };
class Foo {
...
getReferenceInfo(word: string):ReturnObject {
...
}
}

有没有办法在 Typescript 中嵌套接口(interface)?

最佳答案

如评论中所述,目前不支持此功能。有一个 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!;
}
}

它显然并不完美,如果您的用例是“让类型声明更接近使用它的方法”,它甚至可能不值得,这甚至无法解决。

哦,好吧,希望对你有所帮助。祝你好运!

关于typescript - [嵌套接口(interface)/类型] : How to declare function return types inside a class in Typescript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55373514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com