#typescript #flowtype
#typescript #flowtype
Вопрос:
У меня есть типизация, которую я унаследовал и импортирую из библиотеки, и мне было интересно, как я могу удалить ее допуск для нулевых или неопределенных значений.
type Foo = {
baz: string
}
// Bar type is inherited and I would like to kill the union with undefined so I expect foo to never be falsey.
type Bar = {
foo?: Foo
}
const bar: Bar = {foo: {baz: 'baz'}};
// this destructuring issues an error because it allows for the possibility of it being undefined and undefined can't be destructured. And I can't conditionally exit since I'm using React hooks and I'd be violating the hooks should not be used conditionally rule
const {baz} = bar.foo;
Ответ №1:
Во встроенном typescript есть тип утилиты, который называется Required, вы можете использовать его, как показано ниже
type Foo = {
baz: string
}
type Bar = {
foo?: Foo
}
type StrictBar = Required<Bar>
// type StrictBar = { foo: Foo } inferred
Комментарии:
1. потрясающе! есть ли аналогичный инструмент для Flow? проблема на самом деле была проблемой потока, и я надеялся, что существует решение, не зависящее от инструментов. Еще раз спасибо!
2. после просмотра ссылки я увидел эквивалент для Flow здесь: flow.org/en/docs/types/utilities/#toc-nonmaybe