私はTypeScriptバージョン2.3.4を使用しています。フィールドを指定しなければならないオブジェクトを受け入れる関数を記述したいと思います。しかし、このオブジェクトは他のフィールドを含むべきではありません。どうすればこれを達成できますか?TypeScript strict class/interface
これはオブジェクトインラインを定義する場合にのみ機能します。しかし、余分なフィールドを持つ別のオブジェクトを使用すると、コンパイラはそれを許可します。何が完全に間違っている。
例:
function foo(arg: { a: string }) { // there is tons of fields actually
// ...
}
foo ({a: "qwerty"}); // No Error - ok
foo ({a: "qwerty", b: 123}); // Error - ok
let bar = {
a: "qwerty",
b: 123
};
foo (bar); // No Error - NOT OK !!!
同じコードがインターフェイス、クラス、型宣言でwritedすることができる - それは同じ問題です。
これで、オブジェクトから手動でフィールドを抽出して、余分なフィールドがないことを確認する必要がありました。しかし、私はこのソリューションを〜1000の関数に広めることはできません(私は本当にこれが必要です)。私はAPIラッパーを作成し、サーバーに渡された追加または間違ったフィールドがないことを確認する必要があります。
意図的です。詳細については、[この問題](https://github.com/Microsoft/TypeScript/issues/13444)および[this](https://github.com/Microsoft/TypeScript/issues/3755)を参照してください。 – Saravana
サラバナ、ええ、私はこれを読んでいますが、私の質問には答えていません。私はインターフェイスの厳密性を避ける方が良いと思いますが、クラスのために残しておいてください。 –