Có thể hạn chế param
không chấp nhận chuỗi, mảng, v.v ... không?Loại hạn chế loại không có thuộc tính từ chấp nhận chuỗi hoặc mảng
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
Có thể hạn chế param
không chấp nhận chuỗi, mảng, v.v ... không?Loại hạn chế loại không có thuộc tính từ chấp nhận chuỗi hoặc mảng
interface foo {
a?: number;
b?: string;
}
function baz(param: foo) {
}
baz("hello");
Bạn có thể làm một cái gì đó như thế này để làm baz
chấp nhận ít nhất một đối tượng:
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
đây là một Intersection Type.
Đó không phải là gian lận một chút? Bạn đang buộc rằng tham số phải là một đối tượng. –
@MuratK .: Đó không phải là điều mà OP muốn? Nhưng tôi sẽ nghiêng về phía không làm cho nó thành một kiểu, chỉ cần 'hàm baz (param: foo & object)' –
Đáng chú ý rằng kiểu 'object' là rất mới, bạn sẽ cần TypeScript 2.2 để sử dụng nó. –
Tại sao bạn quan tâm? Nếu nó phù hợp với giao diện của bạn, tại sao bạn quan tâm cho dù đó là một chuỗi hoặc một đối tượng? –
Chúng tôi đã có một lỗi mà chúng tôi đã vượt qua tài sản của đối tượng thay vì đối tượng, và biên soạn tốt đẹp. – user3233089
Đó là một mối quan tâm hợp lệ. –