cheezBlog

TypeScript 基本的な型の書き方メモ

型推論と型注釈の使い分け

  • 型注釈出来ないとき
  • 初期化しないとき

変数の型

boolean / number / string

// boolean
let hasValue: boolean = true;

// number
let count: number = 10;

// string
let text: string = 'hello;'

オブジェクト

// 一般的な書き方
const person: {
  name: string; //注意!!セミコロン
  age: number;
} = {
  name: 'Yuna',
  age: 24
}

// その他
const person: {} = {
  name: 'Yuna',
  age: 24
}

const person: object = {
  name: 'Yuna',
  age: 24
}

配列

const fruits: string[] = ['Apple', 'Banana']

Tuple型

複数の値を保持することのできる型。 それぞれの位置の要素の型を明示できる。

const book:[string, number, boolean] = ['business', 1500, true]

※ 要素を.push()などで変更した際に、参照時にはエラーになるが、実行時にはエラーになりません。

Enumでまとまった型を定義

// enumはパスカルケース、値は大文字
enum Device {
  PC = 'PC',
  SP = 'SP'
}

// 短縮可能(その場合、値は数字でインクリメンツされる)
enum device {
  PC, // 0
  SP  // 1
}

const web = {
  url: 'https://〜'
  device: Device.SP
}

Union型

複数の型を許容することができる型

let unionType: number| string = 10

// 配列の場合
const array: (number| string)[] = [10, 'text']

※ 代入後は、型推論される…?

Literal型

決まった値のみを許容する型

const apple: 'apple' = 'apple'

// constで定義したプリミティブ型は、リテラル型になる
const apple = 'apple'

enum型をLiteral型&Union型で再現

let clothSize: 'small' | 'tall' = 'tall'

※ objectに代入した場合も、型推論でリテラル型になってしまうため、enumの方がいいのかも…?

typeエイリアス

長い型や、複数回用いる型を事前に定義することができる。

type ClothSize = 'small' | 'tall'

let clothSize: ClothSize = 'tall'

関数の型

基本

パラメータと戻り値に型を定義 パラメータには必ず!!型を定義する。 戻り値にも型を書いた方が、ぱっとみわかりやすくてドキュメントになる。

// funtion 関数名 (引数1: 型, 引数2: 型...): 戻り値の型 {}
function add (num1: number, num2: number): number {
  return num1 + num2;
}

// アロー関数
const doubleNumber = (num1: number): number => num1 * 2;
// 変数に代入する場合(: が =>になる)
const doubleNumber: (num1: number) => number = num1 => num1 * 2;

値を返さない関数

何も返さない時は、void型。

function sayHello(): void {
  console.log('Hello!');
}

callback関数

関数の引数にcallback関数が入る場合、変数に代入する時と同じように型を記載(: が =>になる)

function doubleAndHandle(num: number, cb: (num: number) => number): voide {
  console.log(num * 2)
}