Доки по разработке
This project is maintained by teniryte
Принципы
T extends Logable гарантирует наличие метода log и позволяет вызывать его безопасно.Form<T>) могут использовать keyof T, чтобы выдавать значения по ключу с корректным типом (T[K]).form.get('email') при отсутствии поля) выявляется на этапе компиляции.Пример
interface Logable {
log: () => void;
}
function logItems<T extends Logable>(items: T[]): void {
items.forEach((item) => item.log());
}
class Form<T> {
constructor(public data: T) {}
get<K extends keyof T>(key: K): T[K] {
return this.data[key];
}
}
Практика
T extends { id: string }).const form = new Form({ ... })) и обращайтесь к существующим полям (form.get('name')).form.get('email') должно вызываться на переменной form2.