問題一覧に戻る
中級ジェネリクス
問題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");