Angular式はJavaScriptに基づいていますが、いくつかの重要な点で異なります。このガイドでは、Angular式と標準JavaScriptの類似点と相違点を説明します。
値リテラル
Angularは、リテラル値のサブセットをJavaScriptからサポートしています。
サポートされる値リテラル
| Literal type | Example values | 
|---|---|
| String | 'Hello',"World" | 
| Boolean | true,false | 
| Number | 123,3.14 | 
| Object | {name: 'Alice'} | 
| Array | ['Onion', 'Cheese', 'Garlic'] | 
| null | null | 
| Template string | `Hello ${name}` | 
サポートされていないリテラル
| Literal type | Example value | 
|---|---|
| RegExp | /\d+/ | 
サポートされていない値リテラル
| Literal type | Example values | 
|---|---|
| BigInt | 1n | 
グローバル
Angular式は、次のグローバルをサポートしています。
その他のJavaScriptグローバルはサポートされていません。一般的なJavaScriptグローバルには、Number、Boolean、NaN、Infinity、parseIntなどがあります。
ローカル変数
Angularは、特定のコンテキストで式に使用できる特別なローカル変数を自動的に用意します。これらの特別な変数は、常にドル記号文字($)で始まります。
たとえば、@forブロックはループに関する情報に対応する複数のローカル変数($indexなど)を提供します。
どのような演算子がサポートされていますか?
サポートされる演算子
Angularは、標準JavaScriptの次の演算子をサポートしています。
| 演算子 | 例(複数) | 
|---|---|
| 加算/連結 | 1 + 2 | 
| 減算 | 52 - 3 | 
| 乗算 | 41 * 6 | 
| 除算 | 20 / 4 | 
| 余り(剰余) | 17 % 5 | 
| Exponentiation | 10 ** 3 | 
| 括弧 | 9 * (8 + 4) | 
| 条件式(三項演算子) | a > b ? true : false | 
| 論理積 | && | 
| 論理和 | || | 
| 論理否定 | ! | 
| Nullish Coalescing | possiblyNullValue ?? 'default' | 
| 比較演算子 | <,<=,>,>=,==,===,!==,!= | 
| Unary Negation | -x | 
| Unary Plus | +y | 
| Property Accessor | person['name'] | 
| 代入 | a = b | 
| 加算代入 | a += b | 
| 減算代入 | a -= b | 
| 乗算代入 | a *= b | 
| 除算代入 | a /= b | 
| 余り代入 | a %= b | 
| Exponentiation Assignment | a **= b | 
| 論理積代入 | a &&= b | 
| 論理和代入 | a ||= b | 
| Nullish Coalescing Assignment | a ??= b | 
Angular式は、さらに次の非標準の演算子もサポートしています。
| 演算子 | 例(複数) | 
|---|---|
| パイプ | {{ total | currency }} | 
| オプショナルチェーン* | someObj.someProp?.nestedProp | 
| 非nullアサーション(TypeScript) | someObj!.someProp | 
NOTE: オプショナルチェーンは、標準JavaScriptバージョンとは異なる動作をします。Angularのオプショナルチェーン演算子の左辺がnullまたはundefinedの場合、undefinedではなくnullを返します。
サポートされていない演算子
| 演算子 | 例(複数) | 
|---|---|
| すべてのビット演算子 | &,&=,~,|=,^=, etc. | 
| オブジェクトのデストラクタリング | const { name } = person | 
| 配列のデストラクタリング | const [firstItem] = items | 
| カンマ演算子 | x = (x++, x) | 
| instanceof | car instanceof Automobile | 
| new | new Car() | 
式の字句コンテキスト
Angular式は、コンポーネントクラスのコンテキストと、関連するテンプレート変数、ローカル変数、およびグローバル変数のコンテキストで評価されます。
When referring to component class members, this is always implied. However, if a template declares a template variables with the same name as a member, the variable shadows that member. You can unambiguously reference such a class member by explicitly using this.. This can be useful when creating an @let declaration that shadows a class member, e.g. for signal narrowing purposes.
宣言
一般的に、Angular式では宣言はサポートされていません。これには、以下が含まれますが、これらに限定されません。
| 宣言 | 例(複数) | 
|---|---|
| 変数 | let label = 'abc',const item = 'apple' | 
| 関数 | function myCustomFunction() { } | 
| アロー関数 | () => { } | 
| クラス | class Rectangle { } | 
イベントハンドラーは、式ではなく文です。Angular式と同じ構文をすべてサポートしていますが、2つの重要な違いがあります。
- 文は代入演算子をサポートします(ただし、分割代入はサポートされていません)。
- 文はパイプをサポートしていません