演算子

演算子

このエントリーをはてなブックマークに追加
最終更新日 2016-12-31

TypeScript の演算子の意味は基本的に JavaScript と同じです。次に示すのは、主要な演算子と、それを使用した場合の型のルールです。

算術演算子

二項演算子の - 、 * 、 / 、 % のオペランドは Any 型または Number 型です。結果は Number 型です。

var a: number = 10;
var b: any = 5;
var c = a - a;  // var c: number = a - a; と同等
var d = a - b;  // var d: number = a - b; と同等
var e = b - b;  // var e: number = b - b; と同等

二項演算子の + のオペランドは両方とも Number 型か、少なくとも一方が Any 型です。 (オペエランドの少なくとも一方が String 型の場合は、後述の文字列演算子を参照してください。) オペランドが両方とも Number 型の場合は結果は Number 型です。 それ以外の場合は結果は Any 型です。

var a: number = 10;
var b: any = 5;
var c = a + a;  // var c: number = a + a; と同等
var d = a + b;  // var d: any = a + b; と同等
var e = b + b;  // var e: any = b + b; と同等

単項演算子の + 、 - のオペランドは任意の型です。結果は Number 型です。

var a: number = 10;
var b = -a;  // var b: number = -a; と同等
var c: boolean = true;
var d = +c;  // var d: number = +c; と同等

単項演算子の ++ 、 -- のオペランドは Any 型または Number 型です。結果は Number 型です。

var a: number = 10;
var b: any = 5;
var c = ++a;  // var c: number = ++a; と同等
var d = --b;  // var d: number = --b; と同等

文字列演算子

二項演算子の + のオペエランドは少なくとも一方が String 型です。結果は String 型です。

var a: string = "TypeScript";
var b: number = 123;
var c = a + b;  // var c: string = a + b; と同等

ビット演算子

二項演算子の << 、 >> 、 >>> 、 & 、 | 、 ^ のオペランドは Any 型または Number 型です。結果は Number 型です。

var a: number = 5;
var b: any = 3;
var c = a << a;  // var c: number = a << a; と同等
var d = a << b;  // var d: number = a << b; と同等
var e = b << b;  // var e: number = b << b; と同等

単項演算子の ~ のオペランドは任意の型です。結果は Number 型です。

var a: number = 10;
var b = ~a;  // var b: number = ~a; と同等
var c: boolean = true;
var d = ~c;  // var d: number = ~c; と同等

比較演算子

二項演算子の < 、 > 、 <= 、 >= 、 == 、 != 、 === 、 !== のオペランドは両方とも同じ型か、一方が他方のサブタイプです。 結果は Boolean 型です。

var a: number = 5;
var b: number = 3;
var c = a < b;  // var c: boolean = a < b; と同等

論理演算子

二項演算子の && のオペランドは任意の型です。結果は 2 番目のオペランドの型です。

var a: string = "TypeScript";
var b: number = 123;
var c = a && b;  // var c: number = a && b; と同等
var d = b && a;  // var d: string = b && a; と同等

二項演算子の || のオペランドは任意の型です。結果は両方のオペランドの共通のスーパータイプか、それが決定できない場合は Any 型です。

var a: string = "TypeScript";
var b: number = 123;
var c = a || b;  // var c: any = a || b; と同等
var d = b || a;  // var d: any = b || a; と同等
var e = b || b;  // var e: number = b || b; と同等

単項演算子の ! のオペランドは任意の型です。結果は Boolean 型です。

var a: number = 10;
var b = !a;  // var b: boolean = !a; と同等
var c: boolean = true;
var d = !c;  // var d: boolean = !c; と同等

代入演算子

二項演算子 = の結果は 2 番目のオペランドの型です。

var a: string = "TypeScript";
var b: number = 123;
var c: any;
var d = c = a;  // var d: string = c = a; と同等
var e = c = b;  // var e: number = c = b; と同等

void 演算子

単項演算子の void のオペランドは任意の型です。結果は Undefined 型です。

var a: string = "TypeScript";
var b: number = 123;
var c = void a;  // var c: any = void a; と同等
var d = void b;  // var d: any = void b; と同等

typeof 演算子

単項演算子の typeof のオペランドは任意の型です。結果は String 型です。

var a: string = "TypeScript";
var b: number = 123;
var c = typeof a;  // var c: string = typeof a; と同等
var d = typeof b;  // var d: string = typeof b; と同等

条件演算子

1 番目のオペランドは任意の型です。2 番目と 3 番目のオペランドは両方とも同じ型か、一方が他方のサブタイプです。 結果は 2 番目と 3 番目のオペランドの共通のスーパータイプです。

var a: number = 10;
var b: number = 5;
var c = a > b ? a : b;  // var c: number = a > b ? a : b; と同等

演算子による型変換

単項演算子の + を使用することによって、任意の型を Number 型に変換することができます。

var a: boolean = true;
var b = +a;  // var b: number = +a; と同等

単項演算子の ! を連続して使用することによって、任意の型を Boolean 型に変換することができます。

var a: string = "TypeScript";
var b = !!a;  // var b: boolean = !!a; と同等

二項演算子の + と空文字列を使用することによって、任意の型を String 型に変換することができます。

var a: number = 123;
var b = a + "";  // var b: string = a + ""; と同等