Dấu hỏi cho tên tham số Bản mô tả là gì


179
export class Thread {
  id: string;
  lastMessage: Message;
  name: string;
  avatarSrc: string;

  constructor(id?: string,
              name?: string,
              avatarSrc?: string) {
    this.id = id || uuid();
    this.name = name;
    this.avatarSrc = avatarSrc;
  }
}

Trong id?những gì ?cho?

Câu trả lời:


207

6
Tôi đã thấy ký hiệu $ ở cuối tên biến. Điều đó nghĩa là gì?
Sunil Garg

12
Nó không liên quan đến TypeScript. Tôi đã thấy cú pháp như vậy trong các dự án RxJs. Từ tài liệu: đó là một "quy ước RxJS phổ biến để xác định các biến tham chiếu một luồng." github.com/redux-observable/redux-observable/blob/master/docs/iêu
Fidan Hakaj 17/2/2017

3
@SunilGarg $ postfix thường là quy ước đặt tên có nghĩa là biến là một quan sát được.
java-nghiện602

30

Điều này là để làm cho biến của loại tùy chọn. Mặt khác, các biến được khai báo hiển thị " không xác định " nếu biến này không được sử dụng.

export interface ISearchResult {  
  title: string;  
  listTitle:string;
  entityName?: string,
  lookupName?:string,
  lookupId?:string  
}

1
Tôi không đồng ý rằng nó chỉ ra loại "không thể". Nó chỉ ra tùy chọn, không nullable. Ví dụ, nó vẫn hợp lệ, titletrong ví dụ trên có giá trị nullnhưng nó sẽ không hợp lệ đối với một lớp tuyên bố thực hiện ISearchResultthiếu một thuộc entityNametính tại thời điểm biên dịch.
Josh Gallagher

8
Tôi nghĩ tên chính xác là "tham số tùy chọn". Loại Nullable sẽ được string?. Để có một nullable tùy chọn, bạn sẽ làm name?: string?.
dùng276648

@DvG Bạn có muốn cải thiện câu trả lời của mình khi xem xét các bình luận của Josh Gallagher và user276648 không?
user1460043

@ user1460043 .. Tôi đã cập nhật câu trả lời của mình. Cảm ơn vì đã thông báo cho tôi
DVG

Tôi giả sử cụm từ "loại tùy chọn" bắt nguồn từ các ngôn ngữ như c ++, scala hoặc python. Nơi bạn có loại <T> Tùy chọn chung. Trên thực tế, sẽ có ý nghĩa hơn khi đặt ?sau đặc tả kiểu thay vì sau tên biến. Nếu bạn không chuyển bất cứ thứ gì vào lookupIdthì nó sẽ không có loại string.
Marti Nito

13

parameter?: type là một tốc ký cho parameter: type | undefined


2
Không chính xác. Dấu hỏi có nghĩa là "tùy chọn". Vì vậy, đó là cách viết tắt của "tham số: loại | không xác định = không xác định" ..
mcoolive
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.