Closed HappyYA closed 1 year ago
你好同学,感谢建议。看了下现状,因为create接口的返回值现在是{ image_key?: string }
,表示所有的数据都会塞在这个对象里,后面可能会往里面追加内容;代码中做了一层兼容:如果接口调用成功但无返回值,那么就返回一个默认对象。这也是符合语义的。
({}).image_key会返回undefined,业务代码里可以加个判断?
问号的含义不就是里面的参数可选吗?{ image_key?: string }
这个类型不就是代表返回值是{image_key: string}
或者{}
吗?
在这个场景下是这样哈。我补充一些背景:
在以上3个背景下,直接用统一的处理方式会比较适当。当然,针对这个api的场景,返回值的类型描述为{ image_key?: string }
是最佳的,但如果对所有特殊场景做优化的话,必要性上需要找一个判断。
如你所述,接口返回值可能是null ,那应该使用null做为后面的兜底类型,而不是一个空对象。 如果参数后续会变动可以增加签名保证兼容性。 如果类型文件是自动生成,无法修改,那没办法了。
对于{}
类型eslint是这样说的
我又把这个类型丢给claude
这确实是一个问题,在使用上很不方便。我统计了下现在拉到的数据,这类场景可以做这个改动。 1.16.1已修复。感谢同学提供建议。
这个联合类型有问题,取值时报错,空对象中不存在image_key。 建议不要将
{}
当作类型使用