XMLValidator.validate的返回值要么是true,要么是ValidationError(这并不完全准确,请查看我的更新),而ValidationError具有err属性。
validate( xmlData: string, options?: validationOptionsOptional): true | ValidationError
因为JavaScript使用对象包装器来表示布尔原始值,所以我可以通过检查err属性是否存在来判断验证是否成功。
const result = XMLValidator.validate(message)
if (result.err) { // How do I make it work in ts?
console.log(`invalid XML)
} else {
console.log(`XML)
}
但是TypeScript不允许我这样做,它会报错:"true"类型上不存在属性'err'。
我不喜欢首先检查返回类型的想法,因为我觉得它很啰嗦,而且实际上没有返回值类型的定义(请查看我的更新)。我应该如何编写尽可能简洁的TypeScript代码?
--- 更新 ---
我进一步检查了validator.js的代码。
const isValid = validateAttributeString(attrStr, options);
if (isValid !== true) {
return getErrorObject(...);
}
...
function getErrorObject(code, message, lineNumber) {
return {
err: {
code: code,
msg: message,
line: lineNumber.line || lineNumber,
col: lineNumber.col,
},
};
}
所以看起来我只能在这里使用 if (typeof result == "boolean"),但我希望有一个"通用"的解决方案来回答我的问题。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号