typescript - Typescript - 获取属性类型,编译时间
问题描述
我有时只是喜欢复制属性的类型,而不是直接使用属性的类型。这可能是因为该类型被声明为内联,或者因为我希望它会改变。该属性位于作为名称空间一部分的接口上。
我努力了:
type IIdentity = Contracts.ICustomer.identities[number]
但声称 ICustomer 不是 Contracts 命名空间的成员,这有点误导。
我还尝试了许多 typeof 组合,但都没有结果。
我想出的唯一方法是通过一个虚拟函数和出色的新 ReturnValue 函数,但这似乎过于复杂:
const evilDummy = (x: Contracts.ICustomer) => x.identities[0]
type IIdentity = ReturnType<typeof evilDummy>
有人有更好的方法吗?
解决方案
您可以使用类型查询:
interface ICustomer{ identities: boolean[] }
type IIdentity = ICustomer['identities'][number] // will be boolean
编辑
或者如果接口在命名空间中
namespace Contracts {
export interface ICustomer{ identities: boolean[] }
}
type IIdentity = Contracts.ICustomer['identities'][number] // will be boolean
推荐阅读
- c++ - OpenCV从相机中每行读取的像素太少
- pine-script - Pine 中的简单时间策略
- python - 如何管理功能以高效使用美汤
- swiftui - 如何在 iPad 上的 SwiftUI 拆分视图中更改主视图宽度
- c++ - 此树实现未显示任何输出
- c# - C# 测试文件与 .NetCore 控制台应用程序中用户的 linux 主路径一起存在
- python - Python Tkinter 项目中的 IndexError
- go - 如何使用自定义错误消息进行 OpenAPI 组件验证?
- azure-ad-b2c - Azure AD B2C 需要添加自定义页面
- python - 在 Python 中将字符串输入转换为 matplotlib.pyplot 的变量