問題一覧に戻る
中級ジェネリクス
問題27: ジェネリック制約
ジェネリックに制約を付ける方法を学びます。T extends Baseの形式で、受け入れる型を制限できます。特定のプロパティやメソッドを持つ型のみを受け入れるようにし、より意味のある型安全なコードを書けます。
// length制約
interface HasLength {
length: number;
}
function logLength(arg: T): T {
console.log(arg.length);
return arg;
}
logLength("hello");
logLength([1, 2, 3]);
// キー制約
function getProperty(obj: T, key: K): T[K] {
return obj[key];
}
const person = { name: "Alice", age: 30 };
const name = getProperty(person, "name");