Может кто-нибудь помочь мне понять смысл следующего объявления типа ...
type PoorMansUnknown = {} | null | undefined;
Это объявление TypeScript, и я сталкивался с ним в контексте истории package.
Я искал, чтобы попытаться понять это сам, но, поскольку я довольно новичок в TypeScript, он немного озадачен. Я нашел следующую информацию:
Мое предположение на этом этапе, автор этой декларации намеревался, чтобы это был способ сказать ... во время выполнения этой вещи может быть либо пустым объектом, либо нулевым, либо неопределенным.
Для большей информации, способ, которым этот тип был обнаружен на моем радаре, находится в пакете act-router-dom ( typedef здесь ). В частности, я использовал компонент Redirect и его свойство to: object , так как я хотел иметь возможность сообщить компоненту, который я перенаправил в то место, где я находился ранее
например,
<Redirect to={{
pathname: "/login",
state: { from: "current-path }
}} />
Документ для маршрутизатора реагирует: ...
Доступ к объекту состояния можно получить через this.props.location.state в перенаправленном на составная часть. Этот новый ключ реферера (который не является специальным именем) будет затем доступен через this.props.location.state.referrer в компоненте Login, на который указывает путь '/ login'
Итак, Я go для доступа к props.location.state как таковой ...
const { from } = location.state || { from: { path: '/' } }
и получаю ошибку
Property 'from' does not exist on type '{} | { from: { path: string; }; }'.
Я прослеживаю это через цепочку typedef, начиная с LocationState и перейду к объявлению для PoorMansUnknown
Здесь начинается мое замешательство. Что это за тип? Как мне с этим справиться?
Я нашел что-то связанное с этим здесь , в котором говорится, что он должен быть разыгран как any
. Поэтому я сделал это следующим образом:
const { from } = location.state as any || { from: { path: '/' } }
Но я не уверен в этом. Это работает, но это просто обходной путь?
Короче говоря, вы когда-нибудь сталкивались с чем-то подобным?
type PoorMansUnknown = {} | null | undefined;
и если да, что вы делаете думаю, что это значит, и как бы вы работали с компонентами, которые его используют?