t0mmy

2020年12月30日に参加

学習履歴詳細

typescript 基礎

やったこと

【世界で7万人が受講】Understanding TypeScript 日本語版

学んだこと

Union型

「AまたはBの型」といった表現が可能になる。

const combine = (input1:number | string, input2:number | string):number | string => {...}

Literal 型

「特定の値を持ったオブジェクトのみ有効」といった表現が可能

const combine = (
input1: number | string,
input2: number | string,
resultConversion: 'as-number' | 'as-string'
): number | string => {...}

上記の ResultConversion は、String型の内、 as-numberas-string という値のみ引き受ける。
これで、任意のstring型がやってくる可能性を排除できる。

alias型

type キーワードを使用した、任意の型を定義できる機能。
型定義に新たな名前を付与でき、再利用性を高める。

type addNumber = (n1: number, n2: number) => number; /*関数の型*/
type Combinable = number | string; /*Union型*/
type ResultConversion = 'as-number' | 'as-string'; /*Literal型*/
type TodoType = { /* Object型 */
  userId:number;
  id: number;
  title: string;
  completed: boolean;
}

typeで定義した型は、 export することで、ファイル分割された他のソースコードから参照できる。

PickOmit の復習

既存のオブジェクトから任意のフィールドを抜き出し、新たなオブジェクトを定義する記法。

export type TodoType = {
  userId: number;
  id: number;
  title: string;
  completed: boolean
}
...
const Todo = (props: Omit<TodoType, "id">) => {...}
const Todo = (props: Pick<TodoType, "userId","title","completed">) => {...}

any型よりもunknown型

unknown型の変数を他の型(例えばstring)の変数へ代入するには、型チェックしなければならない(コンパイルエラーが発生する)。
any型で同様のことを実施すると、コンパイルエラーが発生しない。

コンパイルエラーを発生させ、プログラマに注意を促す意味で、unkown型の方が推奨される。

TypeScript

2022年05月21日(土)

2.0時間