Уничтожение объекта в ТС - PullRequest
1 голос
/ 18 октября 2019

У меня есть этот код TS, и я хочу, чтобы эта часть также была набрана:

    const { data: { person, car, another } }: any = useContext(MyContext);

проблема здесь в том, что ES lint говорит: warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any

У меня есть3 интерфейса созданы для человека, автомобиля, другого, и я хочу использовать их после использования контекста. Моя цель - просто поделиться человеком, машиной, другим

Есть какие-нибудь подсказки?

1 Ответ

1 голос
/ 18 октября 2019

Примечания типа не могут быть размещены в операциях деструктурирования, символ : уже используется там как способ присвоения разрушаемого свойства новому имени.

const { person: p2 } = { person: "Name" }
p2 === "Name" // true

Вы можете заменить any с типом, который вы ожидаете от useContext.

const { data: { person, car, another } }: { data: { person: Person, car: Car, another: Another } }
  = useContext(MyContext);

Но в идеале тип возврата useContext должен быть выведен из передаваемого ему параметра, когда вы создаете контекст, вы должны иметьстрока типа:

type ContextType = {data: {person: Person, car: Car, another: Another}}
const MyContext = createContext<ContextType>({/* default value */})

Когда вы затем используете useContext, возвращаемое значение уже будет иметь ContextType, и ваша деструктуризация будет набираться без каких-либо аннотаций типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...