Typescriptパラメータ名の疑問符は何ですか


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

ではid?何?のために?

回答:


207

これは、パラメーターをオプションとしてマークすることです。


6
変数名の最後に$記号が表示されています。どういう意味ですか?
— Sunil Garg 2017

12
TypeScriptとは関係ありません。RxJsプロジェクトでそのような構文を見てきました。ドキュメントから:「ストリームを参照する変数を識別するための一般的なRxJS規約」です。github.com/redux-observable/redux-observable/blob/master/docs/...
— Fidan Hakaj

3
@SunilGarg $ postfixは通常、変数が監視可能であることを意味する命名規則です。
— java-addict301

30

これは、オプション型の変数を作ることです。それ以外の場合、この変数が使用されていないと、宣言された変数は「未定義」を示します。

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

1
「ヌル可能」タイプを示すことに同意しません。これはオプションであり、NULL可能ではありません。たとえば、title上記の例ではの値を持つことは依然として有効ですが、null実装ISearchResultすることを要求するクラスがentityNameコンパイル時にプロパティを欠いていることは無効です。
— Josh Gallagher

8
正しい名前は「オプションパラメータ」だと思います。null可能型はになりますstring?。オプションのnullableを使用するには、次のようにしますname?: string?。
— user276648 2017年

@DvG Josh Gallagherとuser276648のコメントを考慮して、回答を改善していただけませんか?
— user1460043 2018

@ user1460043 ..回答を更新しました。通知ありがとう
— DvG

「オプションの型」という表現は、c ++、scala、またはpythonなどの言語に由来すると思います。汎用のOptional <T>タイプがある場所。実際?には、変数名の後ろではなく型指定の後に置く方が理にかなっています。に何も渡さない場合lookupId、typeはありませんstring。
— Marti

13

parameter?: type の略記です parameter: type | undefined


2
ではない正確に。疑問符は「オプション」を意味します。したがって、「parameter:type | undefined = undefined」..
— mcoolive
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.