Material-ui: [TextField] type = number faltando min, max, step Tipos de Typescript

Criado em 27 nov. 2017  ·  8Comentários  ·  Fonte: mui-org/material-ui

  • [x] Pesquisei os problemas deste repositório e acredito que não seja uma duplicata.

Comportamento esperado

<TextField type="number" min="0" max="10" step="1" /> deve compilar com Typescript

Comportamento Atual

Recebe o seguinte erro de texto de tipo para min, semelhante para max e etapa: [ts] Property 'min' does not exist on type 'IntrinsicAttributes & TextFieldProps & { children?: ReactNode; }'.

Seu Ambiente

| Tech | Versão |
| -------------- | --------- |
| Material-UI | 1.0.0-beta.21 |
| React | 16.0.0 |
| Typecript | 2.6.1 |

bug 🐛 TextField typescript

Comentários muito úteis

Isto funciona?

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

Todos 8 comentários

Isto funciona?

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

Sim, isso funciona. inputProps aceita um objeto com qualquer coisa nele, portanto, estou efetivamente optando por sair do sistema de tipos ao fazê-lo desta forma.

Sim, isso funciona. inputProps aceita um objeto com qualquer coisa nele, portanto, estou efetivamente optando por sair do sistema de tipos ao fazê-lo desta forma.

Bom ponto, abri # 9321 para corrigir a digitação de inputProps .

inputProps se destina a permitir _qualquer coisa vai_ em um InputComponent . Isso permite a integração aberta com componentes externos, para os quais, infelizmente, podemos não saber ou ter tipos.

Exemplo:

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

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

Portanto, a alternativa para evitar inputProps fortemente tipados no mesmo cenário (obrigado @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 está apresentando uma nova proposta / problema para revisitar esta API.

@rosskevin
MaskedInput não está definido,
máscara não está definida
:(

Esta parece ser uma solução alternativa muito complicada

Seria melhor defini-los no nível TextField, para que a validação possa ser realizada sem um monte de lógica repetida em todos os lugares. Eu odiaria ter que estender TextField toda vez que quiser usá-lo para um campo de número com requisitos mín. / Máx. / Etapas.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

chris-hinds picture chris-hinds  ·  3Comentários

ryanflorence picture ryanflorence  ·  3Comentários

anthony-dandrea picture anthony-dandrea  ·  3Comentários

mb-copart picture mb-copart  ·  3Comentários

finaiized picture finaiized  ·  3Comentários