記号とキーワード

ここに記載してある記号を今の時点で全て覚える必要は全くありません。これから多くのコードを読み書きする過程で知らない記号・キーワードに出会ったら、このページを思い出して一覧を見返してみてください。

JavaScript由来の記号

記号

名称

説明

+

単項正値演算子

Number型に変換します。

例: +'1' => 1

+

加算演算子

2つの値を足し算します。

-

単項負値演算子

正負を反転してNumber型に変換します。

例: -'1' => -1

-

減算演算子

2つの値を引き算します。

/

除算演算子

左の値を右の値で割り算します。

*

乗算演算子

左の値と右の値を掛け算します。

%

剰余演算子

左の値を右の値で割った余りを計算します。

**

べき乗演算子

左の値を右の値でべき乗します。

例: 2 ** 3 => 8

~

ビット否定演算子

ビットを反転します。

例:

const a = 1; // 00000001

console.log(~a) // 11111110

// 出力: -2

!

論理否定演算子

真値と偽値を反転します。

<

小なり演算子

左の値が右の値よりも小さいか判定します。

>

大なり演算子

左の値が右の値よりも大きいか判定します。

<=

小なりイコール演算子

左の値が右の値以下か判定します。

>=

大なりイコール演算子

左の値が右の値以上か判定します。

==

等価演算子

左の値と右の値が等しいか判定します。

型が異なる場合は型変換されて比較されます。

例: '1' == 1 => true

!=

不等価演算子

左の値と右の値が異なるか判定します。

型が異なる場合は型変換されて比較されます。

例: '1' != 1 => false

===

厳密等価演算子

型を含めて左の値と右の値が等しいか判定します。

例: '1' === 1 => false

!==

厳密不等価演算子

型を含めて左の値と右の値が異なるか判定します。

例: 1 === 2 => true

<<

ビット左シフト演算子

左の値のビットを右の値の数だけ左にずらします。

例:

const a = 1 // 00000001

const b = 3

console.log(a << b) // 00001000

// 出力: 8

>>

ビット右シフト演算子

左の値のビットを右の値の数だけ右にずらします。

例:

const a = 8 // 00001000 const b = 3

console.log(a >> b) // 00000001

// 出力: 1

>>>

符号なし右シフト演算子

左の値のビットを右の値の数だけ右にずらします。

左に入る符号ビットは常に 0 になります。

例: const a = -2 // 11111111111111111111111111111110

const b = 3 console.log(a >>> b) // 00011111111111111111111111111111

// 出力: 536870911

&

ビット論理積

左の値と右の値で共にビットが1である位置のビットを1に します。

例:

const a = 1 // 00000001

const b = 5 // 00000101

console.log(a & b) // 00000001

// 出力: 1

|

ビット論理和

左の値と右の値でどちらのビットが1である位置のビットを1に します。

例:

const a = 1 // 00000001

const b = 5 // 00000101

console.log(a & b) // 00000101

// 出力: 5

^

ビット排他的論理和

左の値と右の値でビットの値が異なる位置のビットを1に

します。

例:

const a = 1 // 00000001

const b = 5 // 00000101

console.log(a & b) // 00000100

// 出力: 4

&&

論理積

全ての真偽値が true のときに true を返します。 そうでない場合に false を返します。

||

論理和

一つでも真偽値が true のときに true を返します。

そうでない場合に false を返します。

??

Null合体

左の値が null または undefined の時に右の値を返します。

そうでない場合は左の値を返します。

例:

console.log(undefined ?? 1) // 1

console.log(2 ?? 1) // 2

a ? b : c

条件(三項)演算子

aの真偽値が true の場合は b の値を返します。

aの真偽値が false の場合は c の値を返します。

?.

オプショナルチェイニング

プロパティのアクセス元が null または undefined のときに

エラーを発生させずに undefined を返します。

例:

const user = null

console.log(user.name) // Cannot read property 'name' of null

console.log(user?.name) // undefined

=

代入演算子

左の変数に右の値を割り当てます。

*=

乗算代入

左の変数の値と右の値を掛け算した結果を左の変数に 割り当てます。

**=

べき乗代入

左の変数の値を右の値でべき乗した結果を左の変数に 割り当てます。

/=

除算代入

左の変数の値を右の値で割り算した結果を左の変数に 割り当てます。

%=

剰余代入

左の変数の値に右の値で割り算した余りを左の変数に 割り当てます。

+=

加算代入

左の変数の値とに右の値を足し算した結果を左の変数に 割り当てます。

-=

減算代入

左の変数の値から右の値を引き算した結果を左の変数に 割り当てます。

<<=

左シフト代入

左の変数の値のビットを右の値の数だけ左にずらした結果を 左の変数に割り当てます。

例:

let a = 1 // 00000001

const b = 3 a <<= b

console.log(a) // 00001000

// 出力: 1

>>=

右シフト代入

左の変数の値のビットを右の値の数だけ右にずらした結果を 左の変数に割り当てます。

>>>=

符号なし右シフト代入

左の変数の値のビットを右の値の数だけ右にずらした結果を 左の変数に割り当てます。

左に入る符号ビットは常に 0 になります。

&=

ビット論理積代入

左の変数の値と右の値で共にビットが1である位置のビットを 1にした結果を左の変数に割り当てます。

例:

let a = 1 // 00000001

const b = 5 // 00000101 a &= b

console.log(a) // 00000001

// 出力: 1

|=

ビット論理和代入

左の変数の値と右の値でどちらかがのビットが1である位置の ビットを1にした結果を左の変数に割り当てます。

^=

ビット排他的論理和代入

左の変数の値と右の値でビットの値が異なる位置のビットを 1にした結果を左の変数に割り当てます。

&&=

論理積代入

左の変数の真偽値と右の真偽値の論理積の結果を左の変数に 割り当てます。

例:

let a = true

let b = false

a &&= b

console.log(a) // false

||=

論理和代入

左の変数の真偽値と右の真偽値の論理和の結果を左の変数に

割り当てます。

??=

Null合体代入

左の変数の値が null または undefined の場合のみ右の値を 左の変数に割り当てます。

例: const user1 = { name: undefined } user1.name ??= 'taro' console.log(user1.name) // taro const user2 = { name: 'kaori'} user2.name ??= 'taro' console.log(user2.name) // kaori

,

カンマ演算子

左から右に式を評価をして、一番右の評価した値を返します。

例: let x = -1

const a = x++, x++, x > 0

console.log(a) // true

TypeScript由来の記号

(後でけす)

(TypeScriptのHandbookを眺めて記号を洗い出す)

記号

名称

説明

?

オプション修飾子

オブジェクトのプロパティを任意プロパティとして定義します。

例:

interface User {

name: string; // name は必須

age?: number; // age は任意

}

const user: User = { name: 'taro' }

!

非Nullアサーション

値が null or undefined でないことを宣言し、 コンパイラーに値を非Nullとして解釈させます。

例:

function firstChar(text: string | undefined) { // コンパイルエラーにならない return text!.charAt(0);

}

&

インターセクション型

複数の型を組み合わせたインターセクション型を定義する。

例:

interface Swordsman {

sword: string;

}

interface Wizard {

magic: string;

}

type MagicalSwordsman = Swordsman & Wizard;

|

ユニオン型

複数の型を組み合わせたユニオン型を定義する。

例:

type ID = string | number

const id1 = 'e29b41' // OK

const id2 = 100 // OK

const id3 = true // ERROR

+

修飾子の付加

readonlyや ? などの修飾子を追加する。

何も指定しない場合は暗黙的に + が付与されるので + を実際に利用する機会はおそらくありません。

例:

type MyPartial<T> = {

[k in keyof T]+?: T[k]

}

type MyReadonly<T> = {

+readonly [k in keyof T]: T[k]

}

-

修飾子の削除

readonly や ? などの修飾子を削除する。

例:

type MyRequired<T> = {

[k in keyof T]-?: T[k]

}

type Writable<T> = { -readonly [k in keyof T]: T[k] }