Всем привет. Смотрю проект на TypeScript, увидел непонятную мне конструкцию. Нагуглил справку. Посмотрел, но всё-таки не понял, что же в итоге такое T? Примерный вид кода, который я смотрю:
export type IAllParams =
| IPersonParams
| ICompanyParams
export interface ISomeType<T extends IBaseParams = IAllParams> {
identifier?:string;
}
export interface IBaseParams {
title?:string;
}
В моём случае, что такое T? То есть IBaseParams = IAllParams означает, что T может быть или IBaseParams или IAllParams? Или что это значит?
Я не полез писать проект не зная TypeScript и пока нет необходимости и времени его учить (хотя желание в будущем это сделать есть). Просто нужно понять пока конкретно эту конструкцию. Я понимаю, что такое обобщения, но именно такая конструкция мне непонятна.
Generic parameter defaults
Было:
declare function create(): Container<HTMLDivElement, HTMLDivElement[]>;
declare function create<T extends HTMLElement>(element: T): Container<T, T[]>;
declare function create<T extends HTMLElement, U extends HTMLElement>(
element: T,
children: U[]
): Container<T, U[]>;
Стало:
declare function create<T extends HTMLElement = HTMLDivElement, U = T[]>(
element?: T,
children?: U
): Container<T, U>;
Я всё же не понял, чем может быть T? То есть HTMLElement = HTMLDivElement означает, что T может быть или HTMLElement или HTMLDivElement? Или что это значит?