関数¶
はじめに¶
本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。
01. 関数の種類¶
即時関数¶
無名関数の宣言と呼び出しを同時に行う。
// 無名関数を即時実行し、message変数に代入する
const message = (() => {
return `Hello, Hiroki`;
})();
console.log(message);
メソッド¶
▼ setter¶
プロパティを直接操作するように値を変更できる。
class User {
private _name: string;
constructor(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
set name(newName: string) {
if (newName.trim() === "") {
throw new Error("名前は空にできません");
}
this._name = newName;
}
}
// 最初の名前
const user = new User("Tom");
// プロパティを直接操作するように値を変更できる
// 名前を変更する
user.name = "Bob";
▼ update 系、change 系¶
ドメインを意識したメソッドを使用して値を変更できる。
class User {
private _name: string;
constructor(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
changeName(newName: string): void {
if (newName.trim() === "") {
throw new Error("名前は空にできません");
}
this._name = newName;
}
}
// 最初の名前
const user = new User("Tom");
// ドメインを意識したメソッドを使用して値を変更できる
// 名前を変更する
user.changeName("Bob");
02. 引数¶
分割代入引数¶
▼ 分割代入引数とは¶
関数の引数を定義するときに、オブジェクトから特定のプロパティを直接取り出する記法。
可読性が高くなる。
▼ 分割代入引数しない場合¶
function greet(
// パラメーターからnameプロパティとageプロパティを直接取り出さない
user: {
name: string;
age: number;
},
) {
console.log(`Hello, ${user.name}. You are ${user.age} years old.`);
}
const user = {name: "Hiroki", age: 1};
// 引数を渡す
greet(user);
▼ 分割代入引数する場合¶
function greet(
// パラメーターからnameプロパティとageプロパティを直接取り出す
{
name,
age,
}: {
name: string;
age: number;
},
) {
console.log(`Hello, ${name}. You are ${age} years old.`);
}
const user = {name: "Hiroki", age: 1};
// 引数を渡す
greet(user);
03. 返却値¶
返却値型¶
TypeScript では、 return の型のみを指定すればよい。
// Error型は返却値型に指定しなくても良い
function foo(): string {
try {
// 何らかの処理
return "success";
} catch (e) {
// 何らかの処理
throw new Error("failed");
}
}
// string型または例外を返却する
foo();
返却方法¶
▼ return¶
呼び出し元に成功を返却する。
// string型のみを指定する
function foo(): string {
try {
// 何らかの処理
return "success";
} catch (e) {
// 何らかの処理
return "failed";
}
}
// string型を返却する
foo();
▼ throw¶
呼び出し元に失敗をエラーとして返却する。
どんな型でも返却できる。
// string型のみを指定し、Error型は返却値型に指定しなくても良い
function foo(): string {
try {
// 何らかの処理
return "success";
} catch (e) {
// 何らかの処理
throw new Error("failed");
}
}
// string型またはError型を返却する
foo();