properties - Lớp thuộc tính tùy chọn trong TypeScript
Tôi mới bắt đầu với TypeScript. Công dụng của các thuộc tính tùy chọn trong TypeScript là gì? Và sự khác biệt giữa:
a?: number;
a: number | undefined;
Câu trả lời #1
Thuộc tính tùy chọn: Trong Typescript, bạn có thể khai báo một thuộc tính trong interface của mình mà sẽ là tùy chọn. Giả sử bạn có một interface cho nhân viên và tên đệm là tùy chọn thì mã của bạn sẽ trông như sau:
interface IEmployee {
firstName: string;
lastName: string;
middleName?: string;
}
Khi ai đó sử dụng giao diện IEmployee của bạn thì middleName sẽ là tùy chọn nhưng firstName và lastName là bắt buộc.
let emp: IEmployee = { firstName: "Hohn", lastName: "Doe" }
Toán tử Ống (Pipe Operator): Đôi khi bạn muốn một biến có thể chứa nhiều loại kiểu dữ liệu. Nếu bạn khai báo một thuộc tính là number thì nó chỉ có thể chứa number. Toán tử ống có thể thông báo cho TypeScript rằng nó có thể chứa nhiều loại kiểu dữ liệu. Trường hợp khác mà toán tử ống rất hữu ích là khi bạn trả về một giá trị từ hàm và nó có thể trả về nhiều loại kiểu dữ liệu tùy thuộc vào điều kiện.
Hy vọng nó sẽ giúp được
Câu trả lời #2
Tham số
Sự khác biệt giữa một tham số tùy chọn và một loại tham số number | undefined là bạn không phải cung cấp một đối số...
function a(a?: number) {
return a;
}
function b(a: number | undefined) {
return a;
}
// Okay
a();
b(1);
// Not okay: Expected 1 arguments, but got 0.
b();
Điều này áp dụng cho các hàm, phương thức và các hàm khởi tạo.
Kiểm tra Null Nghiêm ngặt
Nếu bạn bật kiểm tra null nghiêm ngặt, bạn sẽ thấy rằng bất kỳ tham số hoặc thuộc tính tùy chọn nào cũng sẽ tự động nhận một kiểu hợp nhất. Điều đó có nghĩa là id trong ví dụ dưới đây có kiểu number | undefined, ngay cả khi bạn chỉ chỉ định number:
// With strict null checks, this:
class Example {
id?: number;
}
// ... is the same as this:
class Example {
id?: number | undefined;
}
// ... and this:
class Example {
id: number | undefined;
}
Tôi sẽ khuyên bạn nên sử dụng ví dụ đầu tiên vì nó giữ cho cú pháp của bạn nhất quán giữa các thuộc tính và tham số.
