Пример 1
someStaticProperty
значение someStaticProperty
, это приведет к ошибке lint
import { NamedExoticComponent, memo } from "react";
type WithComponentId = { componentId: string };
type ScreenComponentStaticMembers = {
someStaticProperty: string;
};
type AliasedType<P = {}> = NamedExoticComponent<P & WithComponentId> &
ScreenComponentStaticMembers;
type MyComponentProps = {
greeting: string;
};
const MyComponent: AliasedType<MyComponentProps> = memo(({ greeting }) => (
<span>{greeting} there!</span>
));
MyComponent.someStaticProperty = "baz";
Пример 2
Необязательный someStaticProperty
, это будет работать.
import { NamedExoticComponent, memo } from "react";
type WithComponentId = { componentId: string };
type ScreenComponentStaticMembers = {
someStaticProperty?: string;
};
type AliasedType<P = {}> = NamedExoticComponent<P & WithComponentId> &
ScreenComponentStaticMembers;
type MyComponentProps = {
greeting: string;
};
const MyComponent: AliasedType<MyComponentProps> = memo(({ greeting }) => (
<span>{greeting} there!</span>
));
MyComponent.someStaticProperty = "baz";
Всего 1 ответ
У вас есть AliasedType
должен быть пересечением NamedExoticComponent<P & WithComponentId>
и ScreenComponentStaticMembers
и это означает, что AliasedType
должен содержать реквизиты как из NamedExoticComponent<P & WithComponentId>
и ScreenComponentStaticMembers
. Но когда вы создаете переменную MyComponent
типа AliasedType
вы только назначаете ей объект типа NamedExoticComponent<P & WithComponentId>
делая someStaticProperty
undefined
. Вы только присваиваете значение someStaticProperty
на следующей строке.
Чтобы ваш код работал, используйте Object.assign
для создания объекта типа AliasedType
. Это можно сделать так
const MyComponent: AliasedType<MyComponentProps> = Object.assign({},
memo<MyComponentProps>(({ greeting }) => (
<span>{greeting} there!</span>
)),
{ someStaticProperty:"baz" }
)