定数
定数は変数と同様にスコープが設定されますが、代入によって値を変更することはできません。
定数には、次のプロパティと制限があります:
- 定数のスコープは、ページ、フロー、アプリケーションまたはアクション・チェーンです。 定数の値は、
constants
プロパティを使用して記述子で宣言によって定義されます。 - 定数の値は式にすることができます。 式は、現在のスコープまたはアプリケーション/フロー内で事前に定義されている定数および変数を参照できます。
- 定数は最初に評価されるため、変数の式は定数を参照できます。
- 定数の名前は、同じスコープ内の変数では使用できません。
- 定数はアクション・チェーンで使用できます。
- 定数は、ページまたはアクション・チェーンへの入力パラメータにすることができます。
- 定数は組込み型にできません。
- 定数は、不変の値を保持します(JavaScriptとは対照的)。 たとえば、コンテンツがオブジェクトの場合は、オブジェクトの内容(プロパティなど)を変更できません。
- 定数は、変更イベントをディスパッチしません。これは、値が変更されることがないためです。
"constants": {
"myConstant": {
"type": "string",
"description": "A useful constant",
"defaultValue": "This string"
}
}
タイプ
定数型は、組込み型にはできないことを除き、変数の場合と同じです。
デフォルト値
静的デフォルト値 定数は、(JavaScriptとは異なり)不変の値を保持します。 たとえば、コンテンツがオブジェクトの場合、これはオブジェクトのコンテンツ(プロパティなど)を変更できないことを意味します。 定数の値は、初期化中に拡張でオーバーライドできますが、一度値を設定すると変更できません(次を参照)。
動的デフォルト値 定数のデフォルト値には、変数を含む式を指定できます。 この場合、変数値が変更されると、定数は変化します。 その変更によって、onValueChanged
プロパティを使用してリスニングできるvalueChangeイベントがトリガーされます:
"constants": {
"fullName": {
"defaultValue": "{{ $variables.firstName + ' ' + $variables.lastName }}",
"onValueChanged": {
"chains": [
{
"chainId": "fullNameChanged"
}
]
}
}
}
入力
定数入力は変数の場合と同じです。
拡張子
変数と同様に、ベース・コンテナのinterface
セクションに定数が定義されている場合は、ダウンストリームまたは依存拡張によって定数にアクセスできます。
"interface": {
"constants": {
"extendableConstant": {
"type": "string",
"description": "A constant visible to extensions",
"defaultValue": "A string"
}
}
}
さらに、インタフェース定数でコンテナを拡張する場合、extensions
セクションのdefaultValue
プロパティを使用して、拡張コンテナで定数の(ベース)値を変更できます:
"extensions": {
"constants": {
"extendableConstant": {
"defaultValue": "Value from the extension"
}
}
}
onValueChanged
も上書きできます。 その場合、拡張で定義されたチェーンは、ベース・オブジェクト内のチェーンではなく呼び出されます。