关于JS ++上的静态类型,为什么我们不能将外部声明用作类型?例如:
external Uint8Array;
class ByteArray
{
Uint8Array[] composingArrays;
}
JS ++编译器终止了Uint8Array
无法使用的错误" here"并期望一种类型。有什么想法吗?
答案 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);
}
}
可以使用外部类型声明内容的语句示例包括:
由于Uint8Array
的类型为external
,因此您需要匹配的类型(或者它们之间可能有转换)。由于var
创建的变量类型为external
,而实例化的Uint8Array
类型为external
,因此类型将匹配。
在更高级的用法中,您可以查看哪些类型的转换可用于静态external
类型和运行时Uint8Array
类型。