Open8
Typescriptの基礎を学ぶ👀

typescriptが必要な理由
- 型を厳密にするため(厳密にすることで高品質なソフトウェアを作成できる)
- コンパイルの時に静的に解析をすることで開発者がエラーに気づけるようにするため
- 誰でも理解がしやすいコードを作成するため

型の種類
プリミティブ型
- string
- number
- boolean
- symbol
- bigint
- null
- undefined
がある。
リテラル型
プリミティブ型を細分化したもの。
文字列と数値と真偽値のリテラル型がある。
const firstName: 'u2' = 'u2';
const lastName : 'u2' = 'u3'; // エラー 'lastName' が宣言されていますが、その値が読み取られることはありません
オブジェクト型
オブジェクトのプロパティに型をつけれる。
//型を定義
//型の場合は「;」を使う
interface aboutMe ={
name:string;
job :number;
}
//型を付与
const me: aboutMe = {
name:'u2',
age :'23',
}
型が合わないオブジェクトを変数に代入したりしようとすると型エラーになる
配列型
配列に型をつけれる
const array : number[] = [0,1,2]
const array2: string[] = ['あ','い','う']
関数型
関数の引数や返り値に型を定義する
const func1 = (x:number,y:number):number=>{
return x + y;
}

インターセクション型
複数の型を結合できる
//型①
type Profile ={
age :number;
city:string;
}
//型②
type Login ={
username:string;
password:string;
}
//①と➁を結合
type User = Profile & Login;
const u2:User ={
age:22,
city:'tokyo',
username:'u2',
password:'aaaa'
}

ユニオン型
いづれかの型を定義するもの。(型を制限する)
let foo: boolean | string;
foo = true;
foo = 'u2';
foo = 1; //エラー型 '1' を型 'string | boolean' に割り当てることはできません。
配列とかも制限できる
let array:(number | string)[];
array = [1,2,'あ','い']
array = [1,2,'あ','い',true] //型 'boolean' を型 'string | number' に割り当てることはできません。

リテラル型
特定の値のみ代入できるようにする。
//文字列に対して
let fruits:'apple' | 'grape' |'orange';
fruits = 'pineapple'; //エラー 型 '"pineapple"' を型 '"apple" | "grape" | "orange"' に割り当てることはできません。
//数値に対して
let number:22 | 23;
number = 30 //エラー 型 '30' を型 '22 | 23' に割り当てることはできません

typeof
宣言済みの変数を取得するもの
let greeting:string = 'Hello'
let greeting2:typeof greeting = 'Hola' //greeting変数から取得して継承できる!
greeting = 1 //エラー 型 'number' を型 'string' に割り当てることはできません。
オブジェクトに対しても使える
const dog ={dog:'トイプードル'} //型推論でstring型
const dog2:typeof dog = {dog:'トイプードル'} //string型をdog変数から取得して継承

keyof
オブジェクト型からプロパティ名を型として返す(ユニオンタイプで)
type Keys = {
primary:string;
secondary:string;
};
let key: keyof Keys;
key = 'u2' //エラー 型 '"u2"' を型 'keyof Keys' に割り当てることはできません

列挙型
自動で連番をつけてくれる
enum OS {
Windows,
Mac,
Linux,
}
interface PC {
id:number;
OSType:OS;
}
const PC1:PC = {
id:2,
OSType:OS.Windows, //(enum member) OS.Windos = 0
}
const PC2:PC = {
id:3,
OSType:OS.Mac, //(enum member) OS.Mac= 1
}
const PC3:PC = {
id:1,
OSType:OS.Linux, //(enum member) OS.Linux = 2
}