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 作成者による設計上の決定ですか?