param
は文字列や配列などを受け入れないように制限できますか?文字列または配列を受け入れるプロパティのないタイプを制限する
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
param
は文字列や配列などを受け入れないように制限できますか?文字列または配列を受け入れるプロパティのないタイプを制限する
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
あなたはbaz
は、少なくともオブジェクトを受け入れる作るためにこのような何かを行うことができます。
interface foo {
a?: number;
b?: string;
}
interface notAnArray {
forEach?: void
}
type fooType = foo & object & notAnArray;
function baz(param: fooType) {
}
baz("hello"); // Throws error
baz([]); // Throws error
fooType
がIntersection Typeです。
それはちょっと浮気していませんか?あなたは、パラメータがオブジェクトでなければならないことを強制しています。 –
@ MuratK:OPが望んでいることではないですか?しかし、 'function baz(param:foo&object)'のような型にしないほうがいいでしょう。 –
'object'型が非常に新しいことに注目すると、それを使うにはTypeScript 2.2が必要です。 –
なぜ気になりますか?それがあなたのインターフェースに合っていれば、文字列かオブジェクトかはどうして分かりますか? –
オブジェクトの代わりにオブジェクトのプロパティを渡していたバグがあり、typescriptはうまくコンパイルされました。 – user3233089
これは有効な懸案事項です。 –