Jshint / PhpStorm:使用jquery .data()时的“未解析的变量”

时间:2015-10-07 13:17:10

标签: jquery phpstorm jshint jsdoc

Phpstorm一直告诉我,我有一个未定义的变量input.connectto

HTML:     <div class="b-showColorinList" data-connectto="123456" data-othervalue="Lorem Ipsum">...

JS:

$(document).on('click', '.b-showColorinList', function() {
    cm.showColorInList( $(this) );
});

/**
 * Uses ajax to get other color in list view
 * @param {object} inputObj
 */
cm.showColorInList = function(inputObj) {
"use strict";

var input = inputObj.data(),
    parent = $("#"+input.connectto),
    othervalue = input.othervalue;

我知道我可以忽略jshint中的一行,但是有没有办法让它与jsdoc一致,例如将input定义为对象

1 个答案:

答案 0 :(得分:2)

相对于JSDoc docs,正确的方法应该使用@typedef来定义实际的对象结构(如果稍后将在其他地方重新使用,则特别有用)和@type来声明类型特殊变量:

/**
 * @typedef {Object} MyInputData
 * @property {string} connectto 
 * @property {string} othervalue
 */

/** @type {MyInputData} */
var input = inputObj.data();

这个(只有@typedef和变量名称作为类型名称)似乎也适用于PhpStorm:

/**
 * @typedef {Object} input
 * @property {string} connectto 
 * @property {string} othervalue
 */
var input = inputObj.data();