typescript - 可选接口成员的打字稿强制实现
问题描述
给定一个接口
interface IAmOptional {
optional? : string,
optional2?: string
forced: string
}
IAmOptional
有没有办法以这种实现失败的方式来隐藏、扩展或类似的方式?
class someClass {
thisShouldHaveAllKeys : IAmOptional = { // Forced<IAmOptional> ??
forced: 'i am forced'
} // Here I want an error like 'thisShouldHaveAllKeys does not have optional and optional2'
}
解决方案
是的,从 TypeScript 2.8 开始,有一种方法可以使用映射类型的语法以编程方式从属性中删除可选修饰符:-?
type Required<T> = { [K in keyof T]-?: T[K] }
这为您提供了您想要的行为:
class someClass {
thisShouldHaveAllKeys: Required<IAmOptional> = { // error!
//~~~~~~~~~~~~~~~~~~~~~ <-- missing properties optional1, optional2
forced: 'i am forced'
}
}
事实上,这个Required
类型别名非常有用,它已经在标准库中为您预定义了。所以你可以直接使用它而不定义它。
希望有帮助。祝你好运!
推荐阅读
- python - 如何修复我的定义以使用 return 语句正确结束,而不是以 print 结束?
- python - Python GTK ScrolledWindow 高度问题
- python-3.x - 通过所有列绘制直方图
- php - 我需要成为 abel 来过滤一张桌子,谁能告诉我怎么了
- plotly - 为 jupyter lab 安装 plotly-extension 时出错
- git - GitHub - 如何在 2 个 GitHub 存储库之间实时同步?
- generics - Star 投影集合中的特定 KClass
- php - 在 codeigniter 中向会话变量添加新值
- android - 如何使用 OpenCV 处理自定义相机拍摄的图片
- lan - 当win pc连接到局域网路由器时停止响应