TypeScript 1.8で関数の戻り型を取得する例
関数定義から直接推論
TypeScriptの型推論は、関数の定義から戻り型を推論することができます。関数の本体内の式や値の型に基づいて、戻り型の型が決定されます。
function add(a: number, b: number): number {
return a + b;
}
// 戻り型は推論され、numberになります。
型注釈
戻り型を明示的に指定したい場合は、関数定義の後にコロン(:)と型を指定します。
function subtract(a: number, b: number): number {
return a - b;
}
ジェネリック型
関数の戻り型が引数の型に依存する場合、ジェネリック型を使用します。
function identity<T>(arg: T): T {
return arg;
}
// 引数の型と戻り型の型は同じになります。
インフェレンスコンテキスト
関数の呼び出しのコンテキストに基づいて、戻り型が推論されることがあります。例えば、変数に関数の呼び出し結果を代入する場合、変数の型が戻り型の型として使用されます。
const result: number = add(1, 2);
型ガード
関数の戻り型が複数の可能性を持つ場合、型ガードを使用して戻り型の型を絞り込むことができます。
function getLength(value: string | number): number {
if (typeof value === "string") {
return value.length;
} else {
return value.toString().length;
}
}
TypeScript 1.8で関数の戻り型を取得する例
関数定義から直接推論される戻り型
function add(a: number, b: number): number {
return a + b;
}
// 戻り型は推論され、numberになります。
明示的な型注釈
function subtract(a: number, b: number): number {
return a - b;
}
ジェネリック型を使用した戻り型
function identity<T>(arg: T): T {
return arg;
}
// 引数の型と戻り型の型は同じになります。
インフェレンスコンテキストによる戻り型推論
const result: number = add(1, 2);
型ガードを使用した戻り型絞り込み
function getLength(value: string | number): number {
if (typeof value === "string") {
return value.length;
} else {
return value.toString().length;
}
}
型推論の強化
TypeScriptの型推論が強化され、より複雑なケースでも正確な戻り型を推論できるようになりました。例えば、関数の内部で条件分岐やループを使用しても、適切な戻り型が推論されます。
function getLength(value: string | number): number {
if (typeof value === "string") {
return value.length;
} else {
// 戻り型は推論され、numberになります。
return value.toString().length;
}
}
TypeScriptのインフェレンスコンテキストが拡張され、より柔軟な戻り型推論が可能になりました。例えば、関数呼び出しのコンテキストだけでなく、変数や式などの他のコンテキストでも戻り型が推論されます。
const result = add(1, 2); // 戻り型は推論され、numberになります。
型ガードの改良
TypeScriptの型ガードが改良され、より効率的で読みやすいコードを書くことができます。例えば、typeof
演算子の代わりに、instanceof
演算子やカスタム型ガードを使用することができます。
function isString(value: any): value is string {
return typeof value === "string";
}
function getLength(value: string | number): number {
if (isString(value)) {
return value.length;
} else {
return value.toString().length;
}
}
型アサーション
TypeScriptの型アサーションを使用して、明示的に戻り型の型を指定することができます。ただし、型アサーションは慎重に使用しないと、型エラーが発生する可能性があります。
function getLength(value: string | number): number {
return (value as string).length; // 型アサーションで戻り型をstringに指定
}
typescript typescript1.8