在下面的例子中,Typescript一直警告obj?.[type]
隐式地具有any类型。我希望回调函数能够是undefined或函数,因为我之后会检查它。我想保持obj动态,而不是显式地提供它的类型。我如何告诉typescript允许这个可选的链接语句在没有警告消息的情况下传递?
const obj = {
row: {
over: {
page: () => { },
},
},
col: {
over: {
page: () => { }
}
},
el: {
over: {
page: () => { },
row: () => { },
}
}
};
function myFn(type: "page" | "row" | "col" | "el") {
const callback = obj?.[type]?.over?.[type];
if (callback) {
console.log("has callback");
}
console.log("no callback");
}
Typescript Playground:链接
2条答案
按热度按时间oxiaedzo1#
根本原因与可选链接无关。
obj
在第一级不包含page
,因此会导致此警告。您应该像这样定义obj
的类型:应该会有用的。
x4shl7ld2#
您可以在文件开头添加以下注解以避免类型检查:
// @ts-nocheck
但是,您也会从缺少的属性中得到一个错误