30

ECMAScript 6 での静的型付けのサポートはありますか? ECMAScript 7 はどうですか?

4

5 に答える 5

16

いいえ。

しかし、ECMA-Script Wikipage には、ECMA-Script 7 の変更点に関する段落があります。

第 7 版は開発の非常に初期の段階にありますが、言語の改革、コードの分離、効果の制御、ES6 からのライブラリ/ツールの有効化のテーマを継続することを目的としています。提案された新機能には、promise/concurrency、数値と数学の拡張、ガードと商標 (静的型付けの代替)、演算子のオーバーロード、値の型 (ファーストクラスの数値のようなオブジェクト)、新しいレコード構造 (レコード、タプル、および型付き配列) が含まれます。 、パターン マッチング、および特性。

興味があるかもしれません。

于 2014-03-14T14:30:49.837 に答える
6

これは ES6 仕様の一部ではありませんが、Closure Compilerは Advanced コンパイル レベルを使用する場合、JavaScript コードで JSDoc 引数型の注釈を適用します。型注釈はコメントを使用して指定されるため、開発では無視されますが、製品リリース用にアプリをビルドすると、型の不一致によりコンパイラの警告が発生するか、必要に応じてコンパイラ エラーが発生します。

強制された JSDoc 型注釈の例:

/**
 * @param {string} stringValue
 * @return {number}
 */
function toInt(stringValue) {
  return parseInt(stringValue, 10);
}

var val = toInt("10"); // Good
var val = toInt(false); // NaN in development, but throws an error (optional) 
                        // or prints a warning (default) at build time

おまけとして、JSDoc はこれと同じ構文を使用して API ドキュメントを作成できます。そのため、コードを文書化する場合にも便利です。

ただし、警告: Closure Compiler が高度な最適化マジックを実行するには、プロジェクトのすべてのエンジニアが特定の厳密なコーディング規則に従う必要があります。コンパイラは、コードが何を行っているかを確実に把握できない限り、型を強制することはできません。つまり、JavaScript の動的で希望に満ちた構文の一部を放棄することを意味します。これらに従わないと、エラーがアプリに忍び込み、事後の診断が非常に難しくなる可能性があります。コンパイラの externs 機能を使用して回避できる場合もありますが、最も一般的な JavaScript フレームワークとライブラリはそれらに従っていません。(たとえば、externs を使用して jQuery がサポートされます。)

そのため、使用する場合は、アプリを徹底的にテストしてください。個人的には、Jenkins ビルド ボットと、最適化にコードに対して実行できるほぼ 100% の自動化されたテスト カバレッジがない限り、Web アプリでこの機能を使用することを検討しません。これは大変な作業であり、万人向けではありません。プロジェクトの 1 つをそのレベルまで上げるのに数か月かかりました。しかし、個人的には、努力する価値は十分にあると思います。

詳細については、Advanced Compilation and ExternsおよびAnnotating JavaScript for the Closure Compiler を参照してください。

于 2015-01-14T02:26:58.970 に答える
3

いいえ、どちらの ECMAScript 6 (ES2015) でも静的型付けはサポートされていません。

ECMAScript 7 (ES2016) に関しては、ステージ1、2、3、4、またはステージ 0のいずれにも静的型付けの提案はありません。

es-discussメーリング リストにいくつかの静的型付けの提案/アイデアが表示されているのを見てきましたが、これらのいずれも実際には ES7 (ES2016) に対して提案されていません。

今すぐ静的型付けが必要な場合は、おそらく TypeScript または Flow を検討するのが最適です。

于 2016-01-01T01:22:12.963 に答える
0

純粋な ES6 ではありませんが、Google の AtScript は型注釈を使用して ES6 を拡張し、コンパイラが公開されると有効な ES6 コードにコンパイルします: AtScript プライマー

于 2014-11-14T11:04:38.060 に答える
0

オプションとして、EsLint プラグインhttps://github.com/yarax/typelintを見ることができます

これは静的チェックではありませんが、オプションです。TypeLint の利点は、複雑な型を自分で記述しなければならない TypeScript や Flow とは異なり、既存のアプリ データを使用して型を自動的に構築および使用できることです。

于 2016-08-02T21:06:17.240 に答える