很抱歉,如果已经提出此问题,如果有答案,我会很乐意将其关闭。
我经常想在代码中进行字段验证,但是打字稿似乎并不能说明我正在这样做。
这是一个简单的例子来说明我的问题。
interface Something {
a?: string;
b?: string;
}
function validateFieldsExist(obj: Something) {
return obj.a && obj.b;
}
function doStuff(obj: Something) {
if (!validateFieldsExist(obj)) {
return;
}
console.log(obj.a.length); // TYPESCRIPT COMPLAINS
}
有什么办法可以实现?
答案 0 :(得分:0)
您需要将该函数声明为type guard,以告知编译器它检查其参数的类型:
function validateFieldsExist(obj: Something): obj is Required<Something> {
return !!obj.a && !!obj.b;
}