如何检查 'type' 的字段是否在 TypeScript 中未定义?
How to check if a field of 'type' is undefined in TypeScript?
我在 TypeScript 中创建了一个 type
,它有点复杂(里面有对象和映射)。
有没有办法检查这个类型是否有任何未定义的值,或者我应该遍历它的每一部分来检查它是否未定义?
typeof
在这种情况下有用吗?
您可以为此使用验证库。
如果您想使用 类
,请查看 class-validator
或者类似 Joi 的东西,如果你想使用普通对象。
我已经创建了一个递归函数来检查一个对象及其属性,即使它有一个嵌套对象并且return一个boolean
function checkObjectsForUndefined(myObject:object | undefined):boolean
{
if(myObject === undefined)
return true;
let result = false;
let nestedObjectFlag = false;
let attributes = Object.values(myObject);
for(let i = 0;i<attributes.length;i++)
{
if(attributes[i] instanceof Object)
{
nestedObjectFlag = true;
result = result || checkObjectsForUndefined(attributes[i])
}
else
{
if(!attributes[i])
result = true;
}
}
if(nestedObjectFlag)
return result;
else
return Object.values(myObject).some((value) => !value)
}
我在 TypeScript 中创建了一个 type
,它有点复杂(里面有对象和映射)。
有没有办法检查这个类型是否有任何未定义的值,或者我应该遍历它的每一部分来检查它是否未定义?
typeof
在这种情况下有用吗?
您可以为此使用验证库。
如果您想使用 类
,请查看 class-validator或者类似 Joi 的东西,如果你想使用普通对象。
我已经创建了一个递归函数来检查一个对象及其属性,即使它有一个嵌套对象并且return一个boolean
function checkObjectsForUndefined(myObject:object | undefined):boolean
{
if(myObject === undefined)
return true;
let result = false;
let nestedObjectFlag = false;
let attributes = Object.values(myObject);
for(let i = 0;i<attributes.length;i++)
{
if(attributes[i] instanceof Object)
{
nestedObjectFlag = true;
result = result || checkObjectsForUndefined(attributes[i])
}
else
{
if(!attributes[i])
result = true;
}
}
if(nestedObjectFlag)
return result;
else
return Object.values(myObject).some((value) => !value)
}