Typcript parametre adında soru işareti nedir


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;
  }
}

Gelen id?ne ?için?

Yanıtlar:


207

6
Değişken isimlerinin sonunda $ sembolü gördüm. Bu ne anlama geliyor?
Sunil Garg

12
TypeScript ile ilgili değildir. RxJs projelerinde böyle bir sözdizimi gördüm. Dokümandan: "bir akıma referans veren değişkenleri belirlemek yaygın bir RxJS kuralıdır." github.com/redux-observable/redux-observable/blob/master/docs/…
Fidan Hakaj

3
@SunilGarg $ postfix genellikle değişkenin gözlemlenebilir olduğu anlamına gelen bir adlandırma kuralıdır.
java-addict301

30

Bu, İsteğe bağlı tür değişkenini yapmaktır . Aksi takdirde, bu değişken kullanılmazsa bildirilen değişkenler " tanımsız " değerini gösterir .

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

1
Ben bir "boş" türü olduğunu kabul etmiyorum. İsteğe bağlı, boş değerli olmadığını gösterir. Örneğin, titleyukarıdaki örnekte bir değere sahip olmak hala geçerlidir, nullancak derleme zamanında ISearchResultbir entityNameözelliği eksik olduğunu iddia eden bir sınıf için geçersiz olacaktır .
Josh Gallagher

8
Doğru adın "isteğe bağlı parametre" olduğunu düşünüyorum. Sıfırlanabilir tür olurdu string?. İsteğe bağlı bir boş değer elde etmek için bunu yaparsınız name?: string?.
user276648

@DvG Josh Gallagher ve user276648 tarafından yapılan yorumları dikkate alarak cevabınızı geliştirmek ister misiniz?
user1460043 14:18

@ user1460043 .. Cevabımı güncelledim. Beni haberdar
ettiğiniz

"İsteğe bağlı türü" ifadesinin c ++, scala veya python gibi dillerden kaynaklandığını varsayıyorum. Genel bir İsteğe bağlı <T> türünüzün olduğu yerler. Aslında, ?değişken isminin yerine tür belirtiminden sonra belirtmek daha mantıklı olacaktır . Eğer hiçbir şey iletmezseniz lookupId, o zaman tipine sahip olmayacaktır string.
Marti Nito

13

parameter?: type için bir kısayol parameter: type | undefined


2
Tam olarak değil. Soru işareti "isteğe bağlı" anlamına gelir. Yani "parametre: type | undefined = undefined" için bir kısayol.
mcoolive
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.