Material-ui: [TextField] type = число отсутствующих типов min, max, step Typescript

Созданный на 27 нояб. 2017  ·  8Комментарии  ·  Источник: mui-org/material-ui

  • [x] Я искал проблемы в этом репозитории и считаю, что это не дубликат.

Ожидаемое поведение

<TextField type="number" min="0" max="10" step="1" /> должен компилироваться с помощью Typescript

Текущее поведение

Получите следующую ошибку Typescript для min, аналогичную для max и step: [ts] Property 'min' does not exist on type 'IntrinsicAttributes & TextFieldProps & { children?: ReactNode; }'.

Ваше окружение

| Технология | Версия |
| -------------- | --------- |
| Материал-UI | 1.0.0-beta.21 |
| React | 16.0.0 |
| Машинопись | 2.6.1 |

bug 🐛 TextField typescript

Самый полезный комментарий

Это работает?

<TextField type="number" inputProps={{ min: "0", max: "10", step: "1" }} />

Все 8 Комментарий

Это работает?

<TextField type="number" inputProps={{ min: "0", max: "10", step: "1" }} />

Да, это работает. inputProps принимает объект, в котором есть что угодно, поэтому я фактически отказываюсь от системы типов, делая это таким образом.

Да, это работает. inputProps принимает объект, в котором есть что угодно, поэтому я фактически отказываюсь от системы типов, делая это таким образом.

Хорошая мысль, я открыл # 9321, чтобы исправить ввод inputProps .

inputProps предназначен для того, чтобы _все, что происходит_ на InputComponent . Это обеспечивает открытую интеграцию с внешними компонентами, для которых, к сожалению, мы можем не знать или не иметь типов.

Пример:

import * as MaskedInput from 'react-text-mask'

      <TextField
        InputProps={{
          inputComponent: MaskedInput,
        }}
        inputProps={{
          guide: false,
          mask,
          placeholderChar: '\u2000',
        }}
        type="tel"
        value={value}
      />

Таким образом, альтернативой избеганию строго типизированного inputProps в том же сценарии (спасибо @pelotom) является

import { InputProps as MuiInputProps } from 'material-ui/Input'

      <TextField
        InputProps={{
          inputComponent: (inputProps: MuiInputProps) => (
            <MaskedInput {...inputProps} guide={false} mask={mask} placeholderChar="\u2000" />
          ),
        }}
        type="tel"
        value={value}
      />

@pelotom подает новое предложение / проблему для повторного

@rosskevin
MaskedInput не определен,
маска не определена
:(

Это похоже на слишком сложный обходной путь

Было бы лучше определить их на уровне TextField, чтобы проверка могла выполняться без кучи повторяющейся повсюду логики. Мне бы очень не хотелось расширять TextField каждый раз, когда я хочу использовать его для числового поля с требованиями min / max / step.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

ryanflorence picture ryanflorence  ·  3Комментарии

mb-copart picture mb-copart  ·  3Комментарии

ghost picture ghost  ·  3Комментарии

finaiized picture finaiized  ·  3Комментарии

sys13 picture sys13  ·  3Комментарии