Issue
Если у меня есть type Foo={'a':string,'b':string}
, когда я использую Pick<Foo,'a'>
или Omit<Foo,'b'>
, поле b
все еще присутствует в результирующем объекте (см. MWE ниже).
Context
Я хочу уменьшить тип Props в Typescript + React, чтобы сохранить только те данные, которые я хочу отобразить в компоненте Table-UI Table. Точнее, MUI-Datatables , который построен на компоненте Table в Material-UI. Я думаю, что имеет смысл хранить только те данные, которые мне нужны. Это также необходимо из-за того, как установлены реквизиты MUIDatable
.
MWE
Для этого я использую Pick<Foo,'a'>
За исключением того, что другие поля все еще присутствуют.
Вот MWE.
type Foo = {
a: string
b: string
}
type Bar = Pick<Foo, 'a'>
const foo: Foo = { a: 'first', b: 'second' }
const bar: Bar = foo as Bar
console.log(bar)
Playground Link
Так что мой bar = foo as Bar
или <Bar>foo
по-прежнему равен {a: 'first', b:'second'}
в то время как я ожидал, что будет выбран только a
.
Я не понимаю, почему. Я новичок в машинописи, я использовал это как ресурс, чтобы выбрать это решение: https://www.typescriptlang.org/docs/handbook/utility-types.html#picktk
Вопросы
- Почему это не работает?
- Как удалить или сохранить только некоторые поля в типизированном шрифте?