web:https://www.typescriptlang.org/
typescriptはtsとjsを共存して書ける
main.ts
class User {
	
}
console.log("hello world");
main.js
var User = /** @class */ (function () {
    function User() {
    }
    return User;
}());
console.log("hello world");
変数の後にコロンを入れて型を宣言する
var x: number = 10; x = "hello"; // number, string, boolean, any var i: number; var i = 10; // i:number 型推論 var x; // var x:any var results: number[]; // 配列の宣言 results = [10, 5, 3];
列挙型
// 列挙型
enum Signal {
	Red = 0,
	Blue = 1,
	Yello = 2
}
var result: Signal;
console.log(Signal[2]);
// 列挙型
enum Signal {
	Red,
	Blue = 3,
	Yello
}
var result: Signal;
console.log(Signal[3]);
enum Signal {
	Green = 6
}
拡張もできる
関数
型制限を間違えるとコンパイル時にエラーになる
function add(a:number, b:number) : number{
	return a + b;
}
console.log(add(5, 3));
function add(a:number, b:number) : number{
	if(b){
		return a + b;
	} else {
		return a + a;
	}
}
関数式
var add = function(a: number, b: number){
	return a + b;
}
var add = (a: number, b: number): number =>{
	return a + b;
}
オーバーロード
function add(a: number, b: number): number; // シグネチャ
function add(a: string, b: string): string;
function add(a: any, b: any): any {
	if(typeof a === "string" && typeof b === "string"){
		return a + " " + b;
	}
	return a + b;
}
class
class User {
	public name: string;
	constructor(name: strin){
		this.name = name;
	}
	sayHi(): void {
		console.log("hi i am" + this.name);
	}
}
var tom = new User("Tom");