我想知道是否有一种通用的方法(也许是一个库)来检查对象的结构(例如鸭子类型)。
这对于运行时类型检查和编写单元测试都很有用。
我想我正在寻找类似于 typescript “接口(interface)”的东西,但是 typescript 只进行静态检查。
最佳答案
没有简单的方法,但是实用函数怎么样?:
function isOfType(obj, model) {
for (let prop in model) {
if (!(prop in obj) || typeof obj[prop] !== typeof model[prop] || Array.isArray(model[prop]) !== Array.isArray(obj[prop])) {
return false;
}
if (typeof model[prop] === 'object' && !Array.isArray(model[prop])) {
if (!isOfType(obj[prop], model[prop])) {
return false;
}
}
}
return true;
}
基本上,您可以将任何对象与模型进行比较。它将确保该对象具有模型具有的相同类型的所有属性,并将其递归地应用于嵌套对象。
关于javascript - JavaScript 中的结构类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57118453/