Что означает ПРЕДУПРЕЖДЕНИЕ - Подозрительный код. Результат оператора getprop не используется. иметь в виду?

«ВНИМАНИЕ! Подозрительный код. Результат оператора getprop не используется».

Я вижу это для двух строк в своем коде JavaScript, когда использую компилятор закрытия. Они являются определениями типов среди других определений типов, которые не сообщают о проблемах. Что я должен искать?

ИЗМЕНИТЬ

Затронутый код:

/**
 * @typedef {{playerId: number, playerName: string, baseScores: Array.<number>, bonusScores: Array.<number>,
 *          teamScoreAdjustments: Array.<number>}}
 */
wias.GameTableTeamMember;

/**
 * @typedef {{id: number, teamMembers: Array<wias.GameTableTeamMember>, teamName: string}}
 */
wias.GameTableTeam;

/**
 * @typedef {{id: number, availableRound: boolean, bonusScoring: boolean, complete: boolean, gameLength: number,
 *          gameType: string, lastPlayed: string, numberOfRounds: number, teams: Array.<wias.GameTableTeam>, winners:
 *          Array.<string>}}
 */
wias.GameTable;

Предупреждение:

wias.js:77: WARNING - Suspicious code. The result of the 'getprop' operator is not being used.
wias.GameTableTeam;
^

Почему предупреждение там, а не где-то еще?


person Ben Flynn    schedule 03.02.2012    source источник
comment
Я не уверен, что означает предупреждение, но мне любопытно увидеть фактический код, о котором он говорит...   -  person nnnnnn    schedule 03.02.2012


Ответы (1)


Это означает, что у вас есть код, который ничего не делает.

Typedef (или типы записей) более сложны для компилятора, чтобы указать точное место, где возникла проблема, но где-то вы получаете значение, которое не используется.

немного почитайте о системе типов и о том, что лучше всего работает с компилятором https://docs.google.com/document/d/1Uq_vNyPZjlRvYZJclX6N37Fjsiah4XNciEPSBfFiREs/edit

и просто воссоздать предупреждение

if (true) {
   //have nothing in here
}
person lennel    schedule 25.02.2012
comment
Спасибо за эту ссылку и ответ. Все еще не понимаю, почему именно эта строка кода выделена. Все объявления typedef выглядят как no-ops в компиляторе закрытия, но здесь выделено только одно. - person Ben Flynn; 27.02.2012
comment
Я думаю, это потому, что трудно отслеживать определения типов по отношению к классам, а также определения типов рассматриваются более свободно. Изменив typedef на класс, мне удалось более четко отследить несколько предупреждений. - person lennel; 28.02.2012
comment
я только что проснулась. getProp — это способ закрытия внутреннего геттера. Итак, это говорит о том, что wias.GameTableTeam; никогда не используется в вашем приложении. - person lennel; 28.02.2012
comment
Вот в чем дело, wias.GameTableTeam используется сразу в определении wias.GameTable, что не выдает предупреждения. Мне на самом деле не разрешено вкладывать typedef? - person Ben Flynn; 29.02.2012
comment
вам разрешено вкладывать определения типов, но согласно той статье, на которую я тоже ссылался, изначально определения типов являются свободными и быстрыми и не обещают/уверяют, что что-то используется по сравнению с классами. Компилятор не может точно установить, используется ли тип, объявленный в typedef. - person lennel; 29.02.2012