Czy można ograniczyć param
, aby nie akceptować ciągów, tablic itp.?Typ ogranicznika maszynopisu bez właściwości akceptowania ciągów lub tablic
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
Czy można ograniczyć param
, aby nie akceptować ciągów, tablic itp.?Typ ogranicznika maszynopisu bez właściwości akceptowania ciągów lub tablic
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
można zrobić coś takiego zrobić baz
przyjąć przynajmniej obiektu:
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
tutaj jest Intersection Type.
Czy to nie jest oszukiwanie? Wymuszasz, że parametr musi być obiektem. –
@MuratK .: Czy tego nie chce OP? Ale skłaniałbym się ku temu, aby nie robić tego typu, po prostu 'function baz (param: foo & object)' –
Warto zauważyć, że typ 'object' jest bardzo nowy, będziesz potrzebował TypeScript 2.2, aby go użyć. –
Dlaczego cię to obchodzi? Jeśli pasuje do twojego interfejsu, dlaczego zastanawiasz się, czy to ciąg znaków czy obiekt? –
Mieliśmy błąd, w którym przechodziliśmy przez właściwość obiektu zamiast obiektu, a maszynopis został skompilowany poprawnie. – user3233089
To jest ważny problem. –