JS ++の静的型付けに関して、型として外部宣言を使用できないのはなぜですか?たとえば:外部宣言を型として使用できないのはなぜですか?
external Uint8Array;
class ByteArray
{
Uint8Array[] composingArrays;
}
JS ++コンパイラは、Uint8Array
は「ここ」を使用してタイプを期待することができないことerroring終了します。何か案は?
JS ++の静的型付けに関して、型として外部宣言を使用できないのはなぜですか?たとえば:外部宣言を型として使用できないのはなぜですか?
external Uint8Array;
class ByteArray
{
Uint8Array[] composingArrays;
}
JS ++コンパイラは、Uint8Array
は「ここ」を使用してタイプを期待することができないことerroring終了します。何か案は?
JavaScriptの種類をJS ++の型として使用することはできません。 JS ++で
external typeの概念は(時々統一外部タイプと呼ばれる)は、すべてのJavaScriptのタイプはコンパイル時に1種類として扱われることを意味します。 (一種がexternal
タイプである。実行時に、external
がをアンラップし、実行時に任意のJavaScriptタイプであってもよい。)
JS ++型システムは、基本的に(一つの外部種類に統一)外部のタイプであり、内部型(すべてのJS ++型、プリミティブ型、配列、クラスによるユーザー定義型など)、およびそれらの間の変換が含まれます。あなたのコードを書くための
一つの正しい方法は次のようになります。外部のタイプに何かを宣言することができ文の
external Uint8Array;
class ByteArray
{
var composingArrays;
ByteArray(int size) {
this.composingArrays = new Uint8Array(size);
}
}
例として:
external
を入力したUint8Array
ので、外部タイプで値を返す関数を宣言するために使用は、あなたが一致(またはそれらの間の可能な変換を持っている)するタイプを必要としています。 var
はタイプがexternal
で、インスタンス化されたUint8Array
はタイプがexternal
であるため、型が一致します。
さらに高度な使い方では、どのタイプのタイプがスタティックexternal
タイプとランタイムUint8Array
タイプから利用可能かを調べることができます。
したがって、 'var'は単に' external'エイリアスです。私は「自動」なことも役に立つと思う。 – Hydro
私はそれをエイリアスと呼んでいませんが、これは新しい別個の質問の話題のように聞こえます。 –
そうです、私は声明を意味しました。 – Hydro