如何将外部类型定义用作接口而不是类型
在我的 Next.js Web 应用程序中,我使用以下命令将 Swagger/OpenAPI 类型导入到 global.d.ts 中:
type ApiDefinitions = import('types/swagger').definitions
...然后我可以使用以下命令简化该类型在我的应用程序中的使用
type User = ApiDefinitions['User']
:如果我想使用界面用户
而不是类型用户
?
这不起作用,因为它似乎将 User
定义为 any
:(
interface User extends ApiDefinitions['User'] {}
产生错误:类型错误:属性“name”在类型“User”上不存在
)
更新
请参阅此 CodeSandbox 示例,它给出了相同的错误:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以尝试继续使用类型:
you can try to keep using types:
如果您希望用户界面作为实际界面,那就从命名空间 ApiDefinitions“导入”用户界面,不是吗?
与我们如何使用
import("module")
将模块的类型作为命名空间导入类似,我们也可以使用import
从命名空间导入类型:Wack 语法但这是合理的。这有点像大多数语言中的
use
/using
。您可能还想要:
相反。
<一href="https://www.typescriptlang.org/play?#code/HYQwtgpgzgDiDGEAEBBGBLAIhAZu46ALugPbBRIDeAsAFBINIQAeMJAToUvoROzgmQBVKHyp1Gk7gBMAXEmABXMACM+ AbgmMAvnV2066MG05IRYgLyoM2PAWJkoAOnPtNB2jz4DESAKLMvMDSENKUTIEQwRThNPSMoJDyUITs+ADm7vp08I5ciqLs8gFBIWGFSFZxkuhySAAMADRaDIkQ8gBEKiQqHc202upAA" rel="nofollow noreferrer">游乐场
If you want the User interface as an actual interface, that's "importing" the User interface from the namespace ApiDefinitions, no?
Similar to how we can use
import("module")
to import the module's types as a namespace, we can useimport
to also import a type from a namespace:Wack syntax but it is reasonable. This is kind of like
use
/using
in most languages.You might also want:
instead.
Playground