TS2345: Аргумент типа 'число |undefined 'не может быть назначен параметру типа' number ' - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь создать расширение Chrome в машинописном тексте.

У меня есть следующий код, в котором я пытаюсь отправить сообщение на contentcript из фонового скрипта.

// 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'.

Я пытался преобразовать id в целое число с помощью parseInt (), но все равно это не предотвращает ошибку.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Вкладка Chrome .id, возможно, не определена (поскольку она определена как необязательная в определениях типов ), что означает, что при использовании strictNullChecks вы должны либо использовать ненулевое утверждение:

tabs[0].id!

Или напишите код, чтобы убедиться, что идентификатор не равен нулю:

if (tabs[0].id) { // send message
0 голосов
/ 16 октября 2018

Я предполагаю, но, возможно, машинопись считает, что ваш массив вкладок может быть пустым (и, следовательно, не иметь элемента с индексом [0]) - поэтому его тип выводится как число или не определено?

Если дело обстоит именно так, вы должны проверить наличие вкладок [0], прежде чем пытаться получить к нему доступ к свойству id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...