LoginSignup
0
0

【Typescript】 アサーション(as) を避ける

Posted at

はじめに

開発業務で下記のようなコードを見て、エラーが出ている理由が不明だったため型アサーションについて調べてみました。

  type User = {
    name: string;
    age: number;
  };

  const tanaka = (): User => {
    return { name: "田中" };
  }; 
  // エラー
  // プロパティ 'age' は型 '{ name: string; }' にありませんが、型 'User' では必須です。
   
  const yamaguchi = () => {
    return { name: "山口" } as User;
  }; // エラーではない

型アサーションとは

型推論の推測結果とは関係なく、型を上書きする機能です。
コンパイラーよりもプログラマーがより正確な型を知っている場合に使用します。

つまり、確信のある型にのみ型アサーションを使用して、その他はコンパイラーに任せる方がバグを生みにくいコードになります。

型アサーションの説明を踏まえて

上記のコードのtanaka関数式では、Typescriptコンパイラーがコードから型を推論した結果、ageプロパティが不足しているのではないかとコンパイラーに怒られている状態です。

一方で、yamaguchi関数式では、型アサーションを使用することでコンパイラーの型推論結果を上書きしているためエラーは発生しませんでした。

0
0
0

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
0
0