首页 > 解决方案 > 如果不是全部使用,是否有必要在接口中描述对象的所有字段?

问题描述

如果不是全部使用,是否有必要在接口中描述对象的所有字段?

示例:我有一个具有以下结构的服务器响应:

{
  "A": "data",
  "B": "more data"
}

如果我的程序中只使用A ,我是否需要同时输入属性AB

interface ServerResponse {
  A: string
  B: string
}

如果我编写的界面只包含一个肯定会在我的程序中使用的属性A ,我会违反哪些原则\规则\模式?

interface ServerResponse {
  A: string
}

标签: typescriptoopinterfacesolid-principles

解决方案


简短的回答是您只需定义对您的应用程序有意义的合同。无论细节是什么,界面都会为您提供这些细节的特定视图。

现在,类型安全不会在应用程序的边界强制执行,因为编译器不知道服务器的响应在运行时真正具有哪种形状。

如果您只是将服务器的响应转换为您的接口,即使响应不遵守转换站点的合同,您也不会出现运行时错误,因为没有接口的结构运行时验证。

为了在系统边界处具有类型安全性,您必须在强制转换之前在运行时进行验证。


推荐阅读