Google closure compiler externs规则中的多函数签名

Google closure compiler externs规则中的多函数签名,google-closure-compiler,webassembly,Google Closure Compiler,Webassembly,我正在为WebAssembly编写闭包外部程序 对于函数WebAssembly.instantiate,它有2个函数签名 承诺 实例化(缓冲源字节[,importObject]) 承诺实例化(moduleObject[,importObject]) 如何在闭包外部程序中声明这两个规则 参考: 您可以指定参数和结果是两种不同类型的并集。请参见关于如何指定类型 以下是此类函数的一个简单示例: /** * @param {string|number} value * @return {string

我正在为WebAssembly编写闭包外部程序

对于函数
WebAssembly.instantiate
,它有2个函数签名

  • 承诺
    实例化(缓冲源字节[,importObject])
  • 承诺实例化(moduleObject[,importObject])
如何在闭包外部程序中声明这两个规则

参考:


您可以指定参数和结果是两种不同类型的并集。请参见关于如何指定类型

以下是此类函数的一个简单示例:

/**
* @param {string|number} value
* @return {string|number}
*/
ambiguous = function(value) {
  if (typeof value == 'string') {
    return value+' is string';
  } else if (typeof value == 'number') {
    return value+1;
  } else throw new Error();
};
对于
WebAssembly.instantiate
函数,您当然会有比字符串和数字更复杂的类型。我不知道您将如何指定承诺类型,我不知道为这些类型显示的语法,我怀疑闭包编译器是否会按原样解析它。extern看起来是这样的(承诺的类型是假的)

符号用于指示非空对象。如果这些值可以为空,则将其忽略。
对象=
后面的
=
符号表示可以不定义它

使用此函数的结果时,您需要使用
instanceof
或其他方法测试得到的是什么类型的东西。否则,编译器只知道结果是两种可能的类型之一。如果不使用
instanceof
,您可以使用类型转换告诉编译器您知道类型是什么,请参阅上面引用的页面末尾


闭包库中的函数的一个示例,其参数和结果中都有union类型,如下所示。该软件是可用的。请注意,尖括号
用于编译器的模板类型功能。

您可以指定参数和结果是两种不同类型的并集。请参见关于如何指定类型

以下是此类函数的一个简单示例:

/**
* @param {string|number} value
* @return {string|number}
*/
ambiguous = function(value) {
  if (typeof value == 'string') {
    return value+' is string';
  } else if (typeof value == 'number') {
    return value+1;
  } else throw new Error();
};
对于
WebAssembly.instantiate
函数,您当然会有比字符串和数字更复杂的类型。我不知道您将如何指定承诺类型,我不知道为这些类型显示的语法,我怀疑闭包编译器是否会按原样解析它。extern看起来是这样的(承诺的类型是假的)

符号用于指示非空对象。如果这些值可以为空,则将其忽略。
对象=
后面的
=
符号表示可以不定义它

使用此函数的结果时,您需要使用
instanceof
或其他方法测试得到的是什么类型的东西。否则,编译器只知道结果是两种可能的类型之一。如果不使用
instanceof
,您可以使用类型转换告诉编译器您知道类型是什么,请参阅上面引用的页面末尾

闭包库中的函数的一个示例,其参数和结果中都有union类型,如下所示。该软件是可用的。请注意,尖括号
用于编译器的模板类型功能