为什么不能将外部声明用作类型?

时间:2017-07-31 17:42:52

标签: js++

关于JS ++上的静态类型,为什么我们不能将外部声明用作类型?例如:

external Uint8Array;

class ByteArray
{
    Uint8Array[] composingArrays;
}

JS ++编译器终止了Uint8Array无法使用的错误" here"并期望一种类型。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您不能将 JavaScript类型用作JS ++中的类型。

JS ++中 external type (有时称为统一外部类型)的概念意味着所有JavaScript类型都被视为一种类型< / strong>在编译期间。 (一种类型external类型。在运行时,external 解包,并且在运行时可以是任何JavaScript类型。)

JS ++类型系统基本上是外部类型(统一到一个外部类型),内部类型(所有JS ++类型,包括基本类型,数组,通过类的用户定义类型等),以及它们之间的转换

编写代码的一种正确方法是:

external Uint8Array;

class ByteArray
{
    var composingArrays;

    ByteArray(int size) {
        this.composingArrays = new Uint8Array(size);
    }
}

可以使用外部类型声明内容的语句示例包括:

  • external - 用于导入JavaScript库
  • var - 用于声明外部类型
  • 的变量
  • function - 用于声明使用外部类型
  • 返回值的函数

由于Uint8Array的类型为external,因此您需要匹配的类型(或者它们之间可能有转换)。由于var创建的变量类型为external,而实例化的Uint8Array类型为external,因此类型将匹配。

在更高级的用法中,您可以查看哪些类型的转换可用于静态external类型和运行时Uint8Array类型。