5

TypeScript を使用すると、有効な JavaScript プログラムを使用して、いくつかの重要なシンボルをタイプ セーフにすることで型を「強制」できるようになるという印象を受けました。これにより、すべての使用法で型が伝播され、すべてのシンボル参照を更新する必要があります。

これは正しくないようです。次の例では、関数はパラメーターの型をチェックせずmakeDivに型指定された関数を呼び出しています。make

// strongly typed arguments
function make(tagName: string, className: string) {
    alert ("Make: " + className.length);
}

// no typing
function makeDiv(className) {
    // calling the typed function without type checking
    return make("div", className);
}

makeDiv("test"); 
makeDiv(6); // bang!

ここで何かが恋しいですか?「より厳密な」型チェックを強制する方法はありますか? それとも、これは TypeScript 作成者による設計上の決定ですか?

4

1 に答える 1

5

これは設計上の決定です。明示的に型付けされていないものはすべて、暗黙的に型付けされて type になりanyます。すべてのanyタイプに対応しています。

var x:any = 123;
x = "bang";

変数の暗黙的な型指定を防ぐために、TypeScript 0.9.1 以降anyのコンパイラ フラグ ( ) があります。--noImplicitAny

このオプションを指定してコンパイルすると、次のようにしない限り、コードはコンパイル されません。

// You need to explicitly mention when you want something to be of any type. 
function makeDiv(className:any) {
    // calling the typed function without type checking
    return make("div", className);
}
于 2013-08-19T04:23:58.260 に答える