extendsによるジェネリック制約
型パラメーターを特定の形状に制限します。
「extendsによるジェネリック制約」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。
ようこそ
制約がない場合の問題
function getLength<T>(val: T): number {
// return val.length; // Error — T might not have .length
}制約の追加
function getLength<T extends { length: number }>(val: T): number {
return val.length;
}
getLength('hello'); // OK — string has .length
getLength([1, 2]); // OK — array has .length
// getLength(42); // Error — number has no .lengthインターフェースへの制約
interface Named { name: string; }
function greet<T extends Named>(person: T): string {
return 'Hello, ' + person.name;
}keyof制約
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const age = getProperty({ name: 'Alice', age: 30 }, 'age'); // numberユニオンへの制約
type Status = 'active' | 'inactive' | 'banned';
function setStatus<T extends Status>(status: T): void {
console.log('Setting status:', status);
}コンストラクターへの制約
function create<T>(ctor: new () => T): T {
return new ctor();
}交差型による複数の制約
interface Serializable { serialize(): string; }
interface Loggable { log(): void; }
function process<T extends Serializable & Loggable>(item: T): void {
item.log();
console.log(item.serialize());
}制約の継承
class Animal { breathe() { return 'breathing'; } }
function care<T extends Animal>(a: T): string { return a.breathe(); }T自身の拡張(再帰)
interface Comparable<T> { compareTo(other: T): number; }
function max<T extends Comparable<T>>(a: T, b: T): T {
return a.compareTo(b) >= 0 ? a : b;
}制約エラーメッセージ
確認問題
まとめ
よくある質問
「extendsによるジェネリック制約」レッスンは無料ですか?
はい。「extendsによるジェネリック制約」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。
「extendsによるジェネリック制約」で何を学びますか?
型パラメーターを特定の形状に制限します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「extendsによるジェネリック制約」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ジェネリック関数:型パラメーター
- ジェネリックInterfaceと型エイリアス
- extendsによるジェネリック制約
- デフォルト型パラメーター