【发布时间】:2021-01-19 08:21:36
【问题描述】:
我有一个表单并且用户正在填写它,但我想允许保存不完整的表单。
在我可以将对象发送到我的 API 之前,我需要根据属性的类型是数字还是字符串,将 null 属性初始化为 0 或空字符串,否则 API 无法接受该对象.
我目前的解决方案是这样的:
for (const property in this._object) {
if (this._object[property] == null) {
//need help determining if [property] is supposed to be a string or a number
}
}
由于 typeof 检查不适用于 null,因此无法区分字符串和数字。如何确定当前为空的对象的类型?对象类中的属性都是强类型的,所以 typescript 至少在编译时就知道类型。
【问题讨论】:
-
TypeScript 本身不关心运行时类型识别,而这正是您想要做的。您将不得不使用
typeof。 -
您是如何从表单中填写您的
_object的?您应该能够在那里执行“0或""”逻辑,而不是使用for( x in y )循环来破解它。 -
好吧,我依赖于用户输入,所以如果用户没有输入,则不会填充对象。重置表单也会用空值替换所有绑定值,所以我在构造函数中所做的事情并不重要。
-
我应该补充一点,我需要填充 0 的原因是我不能将我的 int 属性中的空值发送到我的 API,因为 int 不能为空。但是,字符串也不能为 0,所以你看到了我的困境
标签: javascript typescript