🐕
TypeScriptの学習
基本情報
- 変数の静的型付け
- 型の変換ができない
- 例) numberからstringなど
以下の方法だとエラーになる
var x: number = 10
x = "hello"
- 型の種類
- number
- string
- boolean
- any
- なんでもはいるが、型がかわるわけではない
var x; //var x: any
- 関数
//一番後ろのnumberは返り値の型
function add(a: number, b: number): number {
return a + b
}
console.log(add(5, 3))
返り値がない場合は、 voidを使用する
-
b?は値があるかわからない場合に使用する -
?を使用する場合は、ない場合の処理を書かないといけない
function add(a: number, b?: number): number {
if(b){
return a + b;
} else {
return a + a;
}
}
console.log(5, 3) //8
console.log(5) //10
- 初期値も渡せる
function add(a: number, b?: number = 10): number {
return a + b
}
関数のオーバーロード
- numberとstringの型を基準に関数を作成している
- numberが来たらnumberの処理
- stringならstringの処理
- 関数部分の初期の型はany型を使用する
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 && b === string) {
return a + " " + b;
}
return a + b;
}
console.log(add(5, 3)) //8
console.log(add("hello", "world")) //hello world
console.log(add("hello", 3)) // エラーになる
class
class User{
/*
name: string;
constructor(name: string) {
this.name = name;
}
*/
//こんな感じで短くかける
constructor(public name: string) {}
sayHi(): void {
console.log("hi! i am" + this.name)
}
}
// インスタンス
var tom = new User("Tom")
console.log(tom.name) // Tom
tom.sayHi() // hi! i am Tom
private
class User{
constructor(private _name: string) {}
sayHi(): void {
console.log("hi! i am" + this.name)
}
//privateでもアクセスしたい場合はgetterを使用する
get name(){
return this._name
}
//値の設定
set name(newValue: string) {
this._name = newValue;
}
}
//getを書かないとprivate部分にアクセスできない
//getがあるとアクセス可能
var tom = new User("Tom")
console.log(tom.name) // Tom
tom.name = "TOM"
console.log(tom.name)//TOM
tom.sayHi() // hi! i am Tom
継承
class User {
constructor(protected _name: string) {
public sayHi(): void {
console.log("hi! i am" + this.name)
}
}
}
//ユーザークラスの変数やメソッドを引き継ぎたい時に使用
class AdminUser extends User {
private _age: number;
//nameとageが渡ってくる
constructor(_name: stirng, _age: number) {
//親クラスのコンストラクターの使用
super(_name);
//ageはこの継承クラスで設定
this._age = _age;
}
//親クラスの関数を引き継ぐが中身はメソッドのオーバーライドする
public sayHi(): void {
console.log("my age:" + this._age);
//protected なら親クラスとそれを継承したクラス_nameを使用できる
console.log("my name:" + this._name);
//親クラスのsayHi()を呼ぶ
super.sayHi();
}
}
var bob = new AdmingUser("Bob", 23);
//my age: 23
// hi! i am Bob
bob.sayHi();
公式サイト
参考サイト
- Dotinstall_TypeScript
Discussion