typescript - 如果不是全部使用,是否有必要在接口中描述对象的所有字段?
问题描述
如果不是全部使用,是否有必要在接口中描述对象的所有字段?
示例:我有一个具有以下结构的服务器响应:
{
"A": "data",
"B": "more data"
}
如果我的程序中只使用A ,我是否需要同时输入属性A和B?
interface ServerResponse {
A: string
B: string
}
如果我编写的界面只包含一个肯定会在我的程序中使用的属性A ,我会违反哪些原则\规则\模式?
interface ServerResponse {
A: string
}
解决方案
简短的回答是您只需定义对您的应用程序有意义的合同。无论细节是什么,界面都会为您提供这些细节的特定视图。
现在,类型安全不会在应用程序的边界强制执行,因为编译器不知道服务器的响应在运行时真正具有哪种形状。
如果您只是将服务器的响应转换为您的接口,即使响应不遵守转换站点的合同,您也不会出现运行时错误,因为没有接口的结构运行时验证。
为了在系统边界处具有类型安全性,您必须在强制转换之前在运行时进行验证。
推荐阅读
- python-3.x - 在 Neo4j 中动态创建节点和 Realtionships
- java - 如何在Java中使用Double.parseDouble格式化基本上由空格分隔的数字组成的字符串
- javascript - 为什么即使我提供了数据,我也会收到验证错误?
- python - 如何创建一个字典,其中键是一年内的所有周数,值是一周内每个工作日的日期列表?
- java - 不能访问接口实现类中的公共方法(只能访问接口中声明的方法)
- r - knitr文档中ggplot中的非英文字符
- django - 如何从 django 视图中为外键属性插入数据?
- ios - 从文档目录中获取音频文件
- python - 在 3 个相同的输入后,对象变为字符串
- php - 如何在下面的代码中将对象转换为 MySQLi?