gpt4 book ai didi

javascript - 在 Typescript 中获取字段类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:36 25 4
gpt4 key购买 nike

我在 Typescript 上课。它有一些字段

field1 : ko.observable<number>();
field2 : ko.observable<string>('');
...

在另一个类的某些函数中,我尝试遍历每个对象字段,对于类型为 number 的字段,我需要执行一些修改。

我怎样才能检测到这一点?


接下来我试过了,但总是得到 string 类型,这在逻辑上是合乎逻辑的。 locationModel 填充 具有来自 HTML 表单的值,其中输入的类型为 text

 Object.keys(locationModel)
.forEach(property => {
if (typeof locationModel[property]() === 'number') { }
else{ }
}
});

最佳答案

如果你想将自动类型转换放入 knockout 中,你可以为此创建一个扩展器。

在最基本的形式中,它可以返回 writable computed要么:

  • 写入 时转换传入值并将转换后的值存储在可观察对象中,或者
  • 将传入值原封不动地存储在可观察对象中,并在读取时将其转换。

后者的实现可能像这样——运行下面的代码片段并注意类型如何反射(reflect)在 View 模型中:

ko.extenders.type = function (target, type) {
var typedValue = ko.pureComputed({
read: function () {
var value = target();
if (typeof value === "undefined" || value === null) {
return value;
} else {
return type(value);
}
},
write: target
});
typedValue.raw = target;
return typedValue;
};

var vm = {
num: ko.observable().extend({type: Number}),
str: ko.observable().extend({type: String})
};

ko.applyBindings(vm);

// init some values
vm.num(100);
vm.str(100);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

Num: <input data-bind="value: num"> (raw: <span data-bind="text: num.raw"></span>)<br>
Str: <input data-bind="value: str"> (raw: <span data-bind="text: str.raw"></span>)<br><br>

<hr>
View Model:<br>
<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>

关于javascript - 在 Typescript 中获取字段类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40533747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com