Có thể tạo Giao diện trong TypeScript với chức năng tùy chọn không?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
Có thể tạo Giao diện trong TypeScript với chức năng tùy chọn không?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
Câu trả lời:
Hiện tại có ba cú pháp mà TypeScript cho phép khai báo hàm trong giao diện:
Sử dụng ví dụ của bạn về một validationhàm nhận 1 tham số ( anykiểu) và một booleangiá trị trả về:
validation: {(flag: any): boolean};
hoặc theo cú pháp mới hơn:
validation(flag: any) : boolean;
hoặc một giải pháp thay thế là:
validation: (flag: any) => boolean;
Giải pháp:
vì vậy, để làm cho nó trở thành tùy chọn với cú pháp cũ rất dễ dàng:
validation?: {(flag: any): boolean};
với cú pháp thứ hai (bổ sung gần đây - cảm ơn @toothbrush)
validation?(flag: any) : boolean;
hoặc trong cú pháp thứ ba (như bạn đã tìm thấy):
validation?: (flag: any) => boolean;
anykhông phải là một kiểu, mà là tên của một tham số ngầm hiểu về kiểu any. Các tham số phải được đặt tên, ngay cả trên các giao diện. Mã này sẽ không biên dịch được nếu --noImplicitAny được bật. Nó phải là một cái gì đó như thế này: validation?:(whatever:any) => boolean;đâu whateverlà tên tham số hợp lý.
if (object.validation):) Nó cần phải dựa vào ngữ cảnh đối tượng, vì vậy if (this.validation)cũng có thể phù hợp tùy thuộc vào hoàn cảnh của bạn.