Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google闭包未在错误类型上失败_Javascript_Google Closure Compiler_Jsdoc - Fatal编程技术网

Javascript Google闭包未在错误类型上失败

Javascript Google闭包未在错误类型上失败,javascript,google-closure-compiler,jsdoc,Javascript,Google Closure Compiler,Jsdoc,我正在尝试为接收对象数组的函数编写注释。 我希望对象具有某些强制属性 当我设置一个内部对象的类型并检查它时,它工作得很好。 但是一旦我添加了数组,编译器就会“跳过”测试对象类型检查 下面是一个示例代码() (链接似乎有问题,请复制并粘贴下面的代码) 不幸的是,闭包总是将数组文字推断为?的数组?。作为?将始终匹配,这将导致您看到的行为 你可以考虑使用这里比较好的打字稿 // ==ClosureCompiler== // @compilation_level ADVANCED_OPTIMIZATI

我正在尝试为接收对象数组的函数编写注释。 我希望对象具有某些强制属性

当我设置一个内部对象的类型并检查它时,它工作得很好。 但是一旦我添加了数组,编译器就会“跳过”测试对象类型检查

下面是一个示例代码()
(链接似乎有问题,请复制并粘贴下面的代码)


不幸的是,闭包总是将数组文字推断为?的数组?。作为?将始终匹配,这将导致您看到的行为

你可以考虑使用这里比较好的打字稿

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print
// ==/ClosureCompiler==

/**
* @record
* @struct
*/
const myType = function() {};
/** @type {!string} */
myType.prototype.arg1;

/**
* @param {myType} input
*/
function run_single(input) {
 console.log(input); 
}

/**
* @param {!Array<myType>} input_arr
*/
function run_array(input_arr) {
    console.log(input_arr);
};


var t = {"arg1": 1};
run_array([t]);
run_single(t);
JSC_TYPE_MISMATCH: actual parameter 1 of run_single does not match formal parameter
found   : {arg1: number}
required: (myType|null) at line 26 character 11
run_single(t);