0
1

More than 3 years have passed since last update.

TypeScriptの基本的機能一覧

Posted at

TypeScriptとは

MicrosoftがJavaScriptを改良して作った言語。
型定義を厳格に行うことでエラーを発生しづらくするなど。
コンパイルを経てJavaScriptに変換される。

変数、定数の定義

変数定数の定義には、let、const、varがある。
let、varは変数を定義しconstは定数を定義する。
let、constはスコープが狭く、varは広い
typescript:

データ型

数値型

数値型
let data: number = 1025;

文字型

文字型
let data: string = 'TypeScript';

真偽値型

真偽値型
let data: boolean = true;

配列型

配列型
// 文字型のみの配列
let data1: string[] = ['TypeScript', 'JavaScript', 'Python'];

// 文字型と数値型の配列
let data2: (string|number)[] = ['TypeScript', 'JavaScript', 'Python', 1025];

タプル型

タプル型
let data: [string, number, boolean] = ['TypeScript', 1025, false];

オブジェクト型

オブジェクト型
let data1: { [key: string]: string } = {
    name: 'TypeScript'
    id: 'Script'
};

let data2: object = [{ id:12, name: 'Type'}];

共有型(Union型)

共有型(Union型)
let data: string | number | boolean;
data = 'test';
data = 1;
data = false;

enum型

enum型
enum ErrorCode{
  OK = 100;
  BAD_RESPONSE = 400;
  UNAUTHORIZED = 401;
};
// 値へのアクセス
console.log(ErrorCode.OK);  // = 100

any型

any型
let data: any = 'foo';
data = 1025;
data = false;

undefind型

undefind型
let data: undefind = undefind;

テンプレート文字列

テンプレート文字列は改行が保持や変数の表示ができる。

const Name = 'Kenji'
let data = `
  Hello,
  World and ${Name}.
  Thank You.
`;

スプレッド演算子

スプレッド演算子を用いることで配列の複製、連結などを容易に行える。
同様にオブジェクトに利用することも可能。

スプレッド演算子
let data = ['A', 'B', 'C'];

// 複製
let copya = [...data1];  // = ['A', 'B', 'C']
console.log(data1 === copya);  // false

// 連結
let pusha = ['X', ...data, 'Z'];  // = ['X', 'A', 'B', 'C', 'Z']

分割代入

分割代入
let data = ['Book', 'Japan', 'as', 'No.1'];
let [a, , b] = data;
console.log(a, b);  // Book as

// スプレッド演算子も使える。
let [c, ...rest] = data;
console.log(rest); // ['Japan', 'as', 'No.1']

// 初期値の代入
let [d = 'Spirited', e = 'Away'] = ['Sen'];
console.log(d,e);  // Sen Away

関数の定義

基本的にJavaScriptと同様

関数
function hello(name: string): void {  //voidは返り値(省略可能)
  console.log(`Hello, ${name}`);
}

// 省略可能な引数(この場合undefind)
function hello(name?: string) {
  console.log(`Hello, ${name}`);
}

// 初期値の設定
function hello(name: string = 'World') {
  console.log(`Hello, ${name}`);
}

アロー関数

let add = (x1: number, x2: number): number => {
  return x1 + x2;
};
console.log(add(1,3));  // 4

クラス

クラス
class Animal{

  constructor(public age: number) {
    // this.age = age  <=アクセス修飾子publicにより不要
  }

  cry() {
    if(age < 5) {
      alert(`age: ${this.age}`);
    }
  }
}

const jon = new Animal(3);
jon.cry();  // age: 3

クラスの継承

クラス
class Animal{

  constructor(public age: number) {
  }

  cry() {
    if(age < 5) {
      alert(`age: ${this.age}`);
    }
  }
}

class Dog extends Animal {
  constructor(public age: nimber) {
    super(age)
  }
  cry() {
    alert('Bow, wow!');
    super.cry()
  }
}
let gon = new Dog(1);
gon.cry()  // Bow, wow!

インターフェース

インターフェースを用いることでクラスやオブジェクトの形式を統一できる。

interface Animal {
  name: string;
  legs: number;
  isCry: boolean;
  cry();
}

class Dog implements Animal {
  name: string = 'MOCHI';
  legs: number = 4;
  isCry: boolean = true;
  cry() {
    console.log('Bow, wow!');
  }
}

ジェネリック

クラスの外側からデータ型を指定できる

class Store<T> {
  constructor(public data: T) {
  }
  gerStore(): T {
    return this.data
  }
}

const c = new Store<string>('Money')
0
1
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
1