Нет способа вывести тип из присваивания, потому что он должен быть выведен во время объявления.Смысл локальных переменных в тестах заключается в том, что они могут использоваться между блоками, это означает, что они могут быть назначены несколько раз.Даже если бы такой вывод был возможен, он был бы неоднозначным:
let foo; // is the type supposed to be a number, or a string, or both, or any?
it('...', () => {
foo = 1;
});
it('...', () => {
foo = 'foo';
});
Поэтому тип должен быть указан явно, например, с помощью ReturnType
:
let wrapper: ReturnType<typeof mount>;
mount
isуниверсальный, тип возвращаемого значения может варьироваться, ReturnType
может быть более сложным с универсальными функциями .
Поскольку фермент shallow
и mount
должен быть явно указан с универсальными параметрами:
wrapper = mount<typeof SomeElement, ISomeElementProps>(<SomeElement />);
Более просто указать универсальный тип напрямую, поскольку известно, какой это тип (ReactWrapper
):
let wrapper: Enzyme.ReactWrapper<ISomeElementProps, ISomeElementState, typeof SomeElement>