是否有可能限制param
不接受字符串,數組等?Typescript沒有屬性的限制類型接受字符串或數組
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
是否有可能限制param
不接受字符串,數組等?Typescript沒有屬性的限制類型接受字符串或數組
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想要的嗎?但我會傾向於不把它變成一種類型,只是'功能baz(param:foo&object)' –
值得注意的是'object'類型是非常新的,你需要TypeScript 2.2來使用它。 –
你爲什麼在意?如果它適合你的界面,你爲什麼介意它是一個字符串還是一個對象? –
我們有一個錯誤,我們傳遞對象的屬性而不是對象,並且打字稿編譯得很好。 – user3233089
這是一個值得關注的問題。 –