2017-07-31 85 views
1

關於JS ++中的靜態類型,爲什麼我們不能使用外部聲明作爲類型?例如:爲什麼不能將外部聲明用作類型?

external Uint8Array; 

class ByteArray 
{ 
    Uint8Array[] composingArrays; 
} 

的JS ++編譯器終止該示數Uint8Array不能使用「這裏」,並期望一個類型。有任何想法嗎?

回答

1

不能使用JavaScript類型作爲JS ++中的類型。

external type概念(有時稱爲統一外部類型)在JS ++意味着所有的JavaScript類型編譯期間爲處理一種類型。 (該一種類型作爲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

+0

所以'var'只是一個'external'別名。我認爲'自動'的東西也會有幫助。 – Hydro

+0

我不會稱之爲別名,但這聽起來像是一個新的單獨問題的話題。 –

+0

是的,我的意思是說。 – Hydro

相關問題