object): ComponentPortal<any>;
Если например
export interface ViewItemFactory {
type: string;
getComponentPortal<T extends Component>(item: object): ComponentPortal<T>;
Получаем ошибку Type '(item: object) => ComponentPortal<SomeComponent>' is not assignable to type '<T extends Component>(item: object) => ComponentPortal<T>'.
Вроде бы в коде ангулара есть интерфейс
export interface Component extends Directive
И есть декоратор с таким же именем
export const Component: ComponentDecorator = makeDecorator(...)
И вот как мне затипизировать getComponentPortal, чтобы она отдавала ComponentPortal с любым компонентом, а не каким-то определенным?
Можно было бы так ViewItemFactory<T> выйти из положения, но как оформить InjectionToken<ViewItemFactory<any>>, он будет требовать опять какую-то типизацию (здесь я вернул противный any).
Любой компонент это и есть Type<any>
Component - интерфейс для декоратора. Сами инстансы ваших компонентов могут быть любого типа, потому все, что могу предложить - unknown/object
Нит. Линтер все одно будет ругаться, что на any, что на отсутствие типизации. Правила линта - наша конституция, я не хочу идти на переворот и гос.измену.
Это откуда скрин? Ну, у нас-то линтер по-другому настроен. Есть правило, что без типизации ни-ни.
скрин из моего проекта. линтер это хорошо, но не нужно бездумно следовать всем его указаниям. В данном случае TS лучше определит все возвращаемых типы, и будет лучше чем указать один какой-то общий тип (типа "любой Angular компонент")
Обсуждают сегодня