2017-10-11 12 views
3

配列に重複があるかどうかを調べるには、次のコードを検討してください。'Set'はタイプのみを参照しますが、ここでは値として使用されています。 (TS2693)

let arr: number[] = [1,2,3,1]; 

function hasDuplicates (arr: number[]): boolean { 
    return new Set(arr).size !== arr.length; 
} 

しかし、ここで私はtypescriptですコンパイラエラー

'Set' only refers to a type, but is being used as a value here. (TS2693) 

任意の提案に遭遇?

答えて

4

SetをES6の一部として加えた。 ES5以下をターゲットに設定している場合は、このエラーが発生します。

あなたはtsconfig.jsones6にターゲットをアップグレードするいずれかの方法でこの問題を解決することができます

"compilerOptions": { 
    "target": "es6", 
    // ... 
} 

それとも、あなたのターゲットを変更する必要はありませんが、あなたはあなたのコードは、あなたのlibオプションにes6を追加コンパイルしたい場合に:

"compilerOptions": { 
    "lib": ["es6"], 
    // ... 
} 

ランタイム環境はSetクラスをサポートしていない場合は、このアプローチでは、それはランタイムエラーがスローされますのでご注意ください。

+0

また、 'es6' libからのセットだけが必要な場合は、代わりに' es2015.collection'を使うことができます。 –

関連する問題