【发布时间】:2021-12-17 04:25:45
【问题描述】:
我试图弄清楚如何处理的一个相当常见的情况是,某些 API 返回的 json 对象中的类型注释。
spec 说:
除了原语之外,您会遇到的最常见的类型是对象类型。这指的是任何带有属性的 JavaScript 值,几乎是所有属性!要定义对象类型,我们只需列出其属性及其类型。 例如,这是一个接受点状对象的函数:
// The parameter's type annotation is an object type
function printCoord(pt: { x: number; y: number }) {
console.log("The coordinate's x value is " + pt.x);
console.log("The coordinate's y value is " + pt.y);
}
printCoord({ x: 3, y: 7 });
所以我们应该键入每个参数和嵌套对象? 如果我事先不知道响应正文怎么办?如果主体很长并且包含大量嵌套对象和对象数组怎么办?
在后一种情况下,最佳做法或明智的选择是什么?
【问题讨论】:
-
如果您还不知道类型,那么 TS 无法帮助您解决问题。您可以使用
any。另一方面,如果您有样本数据,那么您可以基于该结构创建类型/接口 -
我的回答被否决了,所以我改变了它,看看用这种新方法是否对你有帮助
-
@ppicom 答案是正确的。除了事先知道您正在处理什么样的数据外,没有什么可做的。在大型类型中,您可以暂时将 any etc 用于大量数据,但这确实主要是体力劳动
-
谢谢@ppicom,我相信它确实有帮助
-
您也可以使用生成器,它们可以帮助您创建可以手动增强的模板,例如json2ts.com,但请记住不要将敏感数据放到网上。
标签: javascript angular typescript