Typescript - チートシート

Typescriptのインストール

//npmでインストール
npm install TypeScript
//yarnでインストール
yarn add global typescript
//sample.ts ファイルを実行 (実行後にコンパイルされたjsファイルが生成される)
npx tsc sample.ts

基本の形

形の書き方備考
any
let hoge: any;
hoge = '文字'
hoge = 123
any型にはどんな方でも代入でき
void
function log(message): void {
console.log(message);
}
voidは関数に戻り値がない時に使います。
null / undefined
function hoge(props: string | null | undefined) {}
値がnullで現在利用できないことを意味します。
undefinedは初期化されていないことを意味します。
never
function error(message: string): never {
throw new Error(message);
}
bottom形(値を持たない型)の一つ
どんな変数も入れることが出来ない
逆にどんな型にも入れることができます。
真偽値 - boolean
let bool: boolean;
bool = true;
bool = false;
true or falseの真偽値を扱います。
数値 - number
function add (a: number, b: number): number {
return a + b
}
数値は浮動小数値(2,8,10,16進数のリテラル)を扱います。
文字列 - string
let str: string;
str = '文字を代入';
str = 1; // Error
文字列を扱います。
配列 - type[], Array<type>
let arr: string[];
//この方法でも良い ↓
//let arr: Array<string>;
arr[0] = "hogehoge";
arr[1] = 1; //Error
配列の中身を型定義できる。
タプル - [string, number]
const foo: [string, number] = ['foo', 5];
const str: string = foo[0];
配列を表し、長さが2の配列で、0番目に文字列が、1番目に数値を表している
合併型 - union
let value: string | number = 'foo';
value = 100;
value = '文字';
value = true; // Error
union型は値が複数の型のどれかに当てはまるような型を表しています
enum
enum Card {
Clubs = "clubs",
Diamonds = "diamonds",
Hearts = "hearts",
Spades = "spades",
}
console.log(Card.Diamonds); // diamonds
定数をひとまとめに定義できる

型の定義方法

let flg: boolean
let flg: boolean = false
function add (a: number, b: number): number {
return a + b
}

型アサーション

let len: number = (input as string).length
function object(this: {a: number, b: number}, a: number, b: number) {
this.a = a;
this.b = b;
return this;
}
let a = object(1,2);

互換性のある型である場合、<型名>のような形で、変数やリテラル前付与することで、型を明示的に変換してくれる。

オブジェクト型

//{foo: string; bar: number}という型は、fooというプロパティがstring型の値を持ちbarというプロパティがnumber型の値を持つようなオブジェクトの型
interface MyObj {
foo: string;
bar: number;
}
const a: MyObj = {
foo: 'foo',
bar: 3,
};
関数インターフェース
interface SomeFunc{
(a: string, b: string): boolean
}
const someFunc: SomeFunc = (a, b, c) => { // error(c)
return 'bad return' // error
}

関数のシグネチャを宣言

クラスインターフェース
//クラスの構造を定義
interface MyInterface{
getName():void;
getDetail():{address:string};
}
class MyClass implements MyInterface{
private getName(){
}
public getDetail(){
return {
address:'TOKYO'
}
}
}

クラスの構造を定義
プロパティのアクセス範囲を指定

オプション引数(?)

function required(some: string){
return some
}
function optional(some?: string){
return some
}

?でオプションにできる

ジェネリック型

//関数の場合
function echo<T>(param: T): T{
return param
}
echo('hoge')
echo(123)
//クラスの場合
class SomeClass<T>{
someParam: T
someMethod(param: T): T{
// ...
}
}
const strInstance = new SomeClass<string>()
const numInstance = new SomeClass<number>()

<>で囲った名前の列を与えることで、型の定義の中でそれらの名前を型変数として使うことができます

タプル型と可変長引数

type Args = [string, number, boolean];
const func = (...args: Args) => args[1];
const hoge = func('foo', 3, true);
// hogeはnumber型になる

タプル型を関数の可変長引数の型を表す

......

Typescriptの案件


フリーランス20代活躍30代活躍リモートあり長期案件実務経験なしNG週5〜
【Ruby】飲食店の業務の簡略化を目指すVertical SaaSを自社開発!レストラン専用グルメサイトコントローラー「レスラク」のWebアプリケーションエンジニア

■業務内容 ・飲食店向けの業務支援アプリケーションの設計・実装(Rails/React + TypeScript による Single Page Application) ・社内向けの業務管理画面の設計・実装(Rails) ・複数の API/クローラを連動して実行するバックグラウンドジョブの開発(Ruby,Go 等) ■開発の進め方 ・経営の計画に影響のある機能についてはProductOwnerと相談して、いつくらいの時期に必要か、どのような要件かを相談してタスクを登録します。それ以外のユーザーから上がる要望やリファクタリング、障害対応といったものは随時登録します。 ・タスクはすべてGitHubのIssueで管理しており、タスク外の業務・運用知識はGitHubのWikiに整理をしています。 ・開発サイクルはゆるいアジャイルでまわしていて2週間を1イテレーションとして、イテレーションの切り替わるタイミングで前イテレーションの振り返りと次のイテレーションのタスクを登録します。タスクの見積もりは個々人の裁量に委ねています。 ・開発はGItHub + CircleCI ベースで行い、レビューを行いマージした後はCapistrano でデプロイします。 ■開発環境 -フロントエンド ・React/TypeScriptなSPA ・デザインシステムはMaterialDesignベース ・テストランナーにはJestを採用。ViewのテストはStoryShotで差分チェック。 ・Sentryで障害検知 -バックエンド ・アプリケーションサーバはRubyOnRails ・クローラーその他スクリプトはRuby / Goなど -インフラ ・AWS ・DBはMySQL、Redisなど用途に応じて使用

7085万円/月
業務委託契約
表参道駅
RubyGo言語SQLTypeScriptRuby on RailsReactMySQLRedisGitGithub
フリーランス20代活躍30代活躍リモートあり長期案件実務経験なしNG週5〜
【React】飲食店の業務の簡略化を目指すVertical SaaSを自社開発!レストラン専用グルメサイトコントローラー「レスラク」のWebアプリケーションエンジニア

■業務内容 ・飲食店向けの業務支援アプリケーションの設計・実装(Rails/React + TypeScript による Single Page Application) ・社内向けの業務管理画面の設計・実装(Rails) ・複数の API/クローラを連動して実行するバックグラウンドジョブの開発(Ruby,Go 等) ■開発の進め方 ・経営の計画に影響のある機能についてはProductOwnerと相談して、いつくらいの時期に必要か、どのような要件かを相談してタスクを登録します。それ以外のユーザーから上がる要望やリファクタリング、障害対応といったものは随時登録します。 ・タスクはすべてGitHubのIssueで管理しており、タスク外の業務・運用知識はGitHubのWikiに整理をしています。 ・開発サイクルはゆるいアジャイルでまわしていて2週間を1イテレーションとして、イテレーションの切り替わるタイミングで前イテレーションの振り返りと次のイテレーションのタスクを登録します。タスクの見積もりは個々人の裁量に委ねています。 ・開発はGItHub + CircleCI ベースで行い、レビューを行いマージした後はCapistrano でデプロイします。 ■開発環境 -フロントエンド ・React/TypeScriptなSPA ・デザインシステムはMaterialDesignベース ・テストランナーにはJestを採用。ViewのテストはStoryShotで差分チェック。 ・Sentryで障害検知 -バックエンド ・アプリケーションサーバはRubyOnRails ・クローラーその他スクリプトはRuby / Goなど -インフラ ・AWS ・DBはMySQL、Redisなど用途に応じて使用

7085万円/月
業務委託契約
表参道駅
RubyGo言語SQLTypeScriptRuby on RailsReactMySQLRedisGitGithub
フリーランス20代活躍30代活躍リモートあり長期案件実務経験なしNG週5〜
【TypeScript】飲食店のネット予約に関わる課題をテクノロジーで解決!飲食店専用グルメサイトコントローラー「レスラク」のWebアプリケーションエンジニア

■業務内容 ・飲食店向けの業務支援アプリケーションの設計・実装(Rails/React + TypeScript による Single Page Application) ・社内向けの業務管理画面の設計・実装(Rails) ・複数の API/クローラを連動して実行するバックグラウンドジョブの開発(Ruby,Go 等) ■開発の進め方 ・経営の計画に影響のある機能についてはProductOwnerと相談して、いつくらいの時期に必要か、どのような要件かを相談してタスクを登録します。それ以外のユーザーから上がる要望やリファクタリング、障害対応といったものは随時登録します。 ・タスクはすべてGitHubのIssueで管理しており、タスク外の業務・運用知識はGitHubのWikiに整理をしています。 ・開発サイクルはゆるいアジャイルでまわしていて2週間を1イテレーションとして、イテレーションの切り替わるタイミングで前イテレーションの振り返りと次のイテレーションのタスクを登録します。タスクの見積もりは個々人の裁量に委ねています。 ・開発はGItHub + CircleCI ベースで行い、レビューを行いマージした後はCapistrano でデプロイします。 ■開発環境 -フロントエンド ・React/TypeScriptなSPA ・デザインシステムはMaterialDesignベース ・テストランナーにはJestを採用。ViewのテストはStoryShotで差分チェック。 ・Sentryで障害検知 -バックエンド ・アプリケーションサーバはRubyOnRails ・クローラーその他スクリプトはRuby / Goなど -インフラ ・AWS ・DBはMySQL、Redisなど用途に応じて使用

7085万円/月
業務委託契約
表参道駅
RubyGo言語SQLTypeScriptRuby on RailsReactMySQLRedisGitGithub
フリーランス20代活躍30代活躍リモートあり長期案件実務経験なしNG週5〜
【Ruby on Rails】飲食店のネット予約に関わる課題をテクノロジーで解決!飲食店専用グルメサイトコントローラー「レスラク」のWebアプリケーションエンジニア

■業務内容 ・飲食店向けの業務支援アプリケーションの設計・実装(Rails/React + TypeScript による Single Page Application) ・社内向けの業務管理画面の設計・実装(Rails) ・複数の API/クローラを連動して実行するバックグラウンドジョブの開発(Ruby,Go 等) ■開発の進め方 ・経営の計画に影響のある機能についてはProductOwnerと相談して、いつくらいの時期に必要か、どのような要件かを相談してタスクを登録します。それ以外のユーザーから上がる要望やリファクタリング、障害対応といったものは随時登録します。 ・タスクはすべてGitHubのIssueで管理しており、タスク外の業務・運用知識はGitHubのWikiに整理をしています。 ・開発サイクルはゆるいアジャイルでまわしていて2週間を1イテレーションとして、イテレーションの切り替わるタイミングで前イテレーションの振り返りと次のイテレーションのタスクを登録します。タスクの見積もりは個々人の裁量に委ねています。 ・開発はGItHub + CircleCI ベースで行い、レビューを行いマージした後はCapistrano でデプロイします。 ■開発環境 -フロントエンド ・React/TypeScriptなSPA ・デザインシステムはMaterialDesignベース ・テストランナーにはJestを採用。ViewのテストはStoryShotで差分チェック。 ・Sentryで障害検知 -バックエンド ・アプリケーションサーバはRubyOnRails ・クローラーその他スクリプトはRuby / Goなど -インフラ ・AWS ・DBはMySQL、Redisなど用途に応じて使用

7085万円/月
業務委託契約
表参道駅
RubyGo言語SQLTypeScriptRuby on RailsReactMySQLRedisGitGithub
フリーランス20代活躍30代活躍フルリモート安定稼働
【Golang/フルリモート】資金調達15憶円!日本最大級オンラインギフトプラットフォーム「GiftMall」のソフトウェアエンジニア(Webアプリケーション)

ソフトウェアエンジニアとして弊社が展開しているメディアやECシステムの開発をバックエンド部分を中心に行っていただきます。ビジネスデベロッパーやデザイナーと密接に連携をとりながら、プロダクトの仕様調整から携わりながら開発を進めていただきます。 【利用技術,サービス,環境】 - インフラ: AWS - データストレージ: MySQL / Amazon Aurora / Memcached - モニタリング: Datadog / Fluentd / Sentry - サーバ: Apache / Nginx - 環境構築: Terraform / Docker / Ansible / Circle CI - Frontend開発: TypeScript / webpack / SCSS / BEM - サーバ開発: PHP / Golang - 社内のカルチャーとしては静的型付け、明示性などの堅牢な設計方針を好むカルチャーです - PHPを利用している箇所についてもタイプヒンティングの積極的な利用、各種静的解析ツールの導入、レイヤリングアーキテクチャの導入などを積極的に進めていっています

6090万円/月
業務委託契約
銀座駅
PHPGo言語TypeScriptTerraformMySQLApacheNginxGitDocker
フリーランス20代活躍30代活躍フルリモート安定稼働
【PHP/フルリモート】資金調達15憶円!日本最大級オンラインギフトプラットフォーム「GiftMall」のソフトウェアエンジニア(Webアプリケーション)

ソフトウェアエンジニアとして弊社が展開しているメディアやECシステムの開発をバックエンド部分を中心に行っていただきます。ビジネスデベロッパーやデザイナーと密接に連携をとりながら、プロダクトの仕様調整から携わりながら開発を進めていただきます。 【利用技術,サービス,環境】 - インフラ: AWS - データストレージ: MySQL / Amazon Aurora / Memcached - モニタリング: Datadog / Fluentd / Sentry - サーバ: Apache / Nginx - 環境構築: Terraform / Docker / Ansible / Circle CI - Frontend開発: TypeScript / webpack / SCSS / BEM - サーバ開発: PHP / Golang - 社内のカルチャーとしては静的型付け、明示性などの堅牢な設計方針を好むカルチャーです - PHPを利用している箇所についてもタイプヒンティングの積極的な利用、各種静的解析ツールの導入、レイヤリングアーキテクチャの導入などを積極的に進めていっています

6090万円/月
業務委託契約
銀座駅
PHPGo言語TypeScriptTerraformMySQLApacheNginxGitDocker