Я борюсь с назначением типа.
В приведенном ниже примере я хочу иметь возможность работать с типом, который я предоставляю функции createMock_UserService
. Это работает нормально, если я вызываю функцию с нужным типом, но не работает, когда я не предоставляю тип и хочу присвоить его Child
вручную, происходит сбой с ошибкой, отмеченной в коде ниже.
export class Parent {
}
export class Child extends Parent {
}
export function createMock_UserService<T extends Parent>(type?: Type<T>) {
if(!type) {
// this fails -> Type 'Child' is not assignable to type 'T'
type = Child;
}
// do stuff with type
injector.get(type);
}
// calling it works
createMock_UserService(Child);
// this doesn't
createMock_UserService();
Type<T>
определяется как (это угловой код и машинописное ядро)
export declare const Type: FunctionConstructor;
interface FunctionConstructor {
/**
* Creates a new function.
* @param args A list of arguments the function accepts.
*/
new(...args: string[]): Function;
(...args: string[]): Function;
readonly prototype: Function;
}
Как я могу заставить эту работу?
У меня такое чувство, что я упускаю что-то очевидное.
Вот блик стека