我正在尝试在打字稿中创建Chrome扩展。
我有以下代码,我尝试从后台脚本向内容脚本发送消息。
// background script
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {action: "open_dialog_box"}, function(response) {
console.log(response);
});
});
但是打字稿给出以下错误
ERROR in /Users/shobi/Projects/Chrome Extensions/src/js/background.ts(8,37)
TS2345: Argument of type 'number | undefined' is not assignable to parameter of type 'number'.
Type 'undefined' is not assignable to type 'number'.
我尝试使用 parseInt(( 将 id 转换为整数,但仍然无法阻止错误。
Chrome的选项卡.id
可能是未定义的(因为它在类型定义中被定义为可选的(,这意味着在使用strictNullChecks
时,您必须使用非空断言:
tabs[0].id!
或者编写代码以确保 id 不为空:
if (tabs[0].id) { // send message
我猜,但也许打字稿认为你的选项卡数组可能是空的(因此索引 [0] 处没有项目( - 这就是为什么它的类型被推断为数字或未定义?
如果是这种情况,您应该在尝试访问其上的 id 属性之前检查 tabs[0] 是否存在。