103
68

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TypeScriptの「この記号・単語なんだっけ?」をまとめる - as, in, is, !, ?. , ?? -

Last updated at Posted at 2020-05-14

TypeScriptの構文で「意味は分かるけど名前は分からん。そして単発記号or単語でググっても見つからん!」というのがあるのでメモとしてまとめます。
随時追加予定。

as - type Assertion -

コンパイラに推論される型を明示的に上書きする。

Advanced Types · TypeScript

interface Foo {
  bar?: number;
  bas?: string;
}

let foo = {} as Foo; // {} はFoo型だとコンパイラに伝えている
foo.bar = 123;
foo.bas = "hello";

in - in operator

JSの in operator と使い方は同じ。オブジェクトのプロパティの判定に使える。
TypeScriptの場合はさらに、型の絞り込みとしても機能する。他にもMapped TypeのKeyの生成でも使われる。

TypeScript の"is"と"in"を理解する - Qiitaでも解説してます。

Advanced Types · TypeScript

interface Bird {
    fly();
    layEggs();
}

interface Fish {
    swim();
    layEggs();
}

function move(pet: Fish | Bird) {
  // petにswimプロパティがあるかどうか判定する。以降そのプロパティを持つ型として推論される。
  if ("swim" in pet) {
  // ここではFish型
    return pet.swim();
  }
  // ここではBird型
  return pet.fly();
}

is - type predicates -

真偽値を返す関数の引数の型を絞り込めるようにする。
ユーザー定義型のType Guardとして使われることが多い。

TypeScript の"is"と"in"を理解する - Qiitaでも解説してます。

Advanced Types · TypeScript

// この関数がtrueの場合、その空間でisFishの引数の変数は、Fish型として推論される
function isFish(pet: Fish | Bird): pet is Fish {
  return (pet as Fish).swim !== undefined;
}

! - non-null assertion operator -

コンパイラにこの値はnull,undefinedではなないと伝えるもの。
使いすぎ注意。丁寧に書くならtype guardで型を絞り込んだ方が良い。

TypeScript 2.0 · TypeScript

function processEntity(e?: Entity) {
  validateEntity(e);
  let s = e!.name; // eはu`ndefined | Entity`ではなくEntityとして推論される
}

?. - optional Chaining -

null, undefinedセーフな呼び出しを可能にする構文。便利。

TypeScript 3.7 · TypeScript

let x = foo?.baz(); // fooがnull, undefの時はundef, それ以外の時はbaz()の戻り値

?? - nullish Coalescing -

値がnull, undefだった場合、??の右辺の評価値を返す構文。
null, undefチェックの三項演算子のシンタックスシュガー。

TypeScript 3.7 · TypeScript

let x = foo ?? bar(); // fooがnull, undefinedだったらbar()を実行, それ以外ならfooを返す

参考

103
68
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
103
68

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?