Почему Webpack ведет себя по-разному при передаче реквизита, «сначала определяя его с помощью определения типа, а затем передавая» и «прямой передачи» - PullRequest
0 голосов
/ 23 июня 2019

Я использую машинопись и реагирую вместе, и столкнулся с этой проблемой.

Webpack действует по-разному при передаче объекта типа prop компоненту.Если вы установите для этого объекта локальную переменную, дав определение типа, это не позволит вам использовать реквизиты, которые не существуют.Но если вы не используете определение типа или не передаете свой объект компоненту без инициализации в качестве локальной переменной, тогда вы можете передать все, что захотите, и компилятор не выдаст никаких ошибок.

У меня есть компонент с именемФу, который имеет несколько реквизита.И один из них называется inputProps, который имеет тип MyInputProps.

MyInputProps = Pick<React.HTMLProps<HTMLInputElement>, Exclude<keyof> React.HTMLProps<HTMLInputElement>, "onBlur">>. 

По сути, я пытаюсь позволить пользователю API использовать любые входные данные, доступные в определениях HTMLInputElement, кроме "onBlur".

Итак, у меня есть два случая;

1 - это дает «Объектный литерал может указывать только известные свойства, а« onBlur »не существует в ...» предупреждение tslint и выдает ошибку, если я пытаюсь его скомпилировать.

const inputProps: MyInputProps = {  
    ...someInputProps,  
    onBlur: this.myHandleBlurFunction  
}

2 - Ни то, ни другоеts-lint не выдает никаких предупреждений, а компилятор не выдает никаких ошибок.

const inputProps = {  
   ...someInputProps,  
   onBlur: this.myHandleBlurFunction  
}

ИЛИ

<Foo
   ...someComponentProps
   inputProps={{
       ...someInputProps,
       onBlur: this.myHandleBlurFunction
   }}
/>

Почему ts-lint и webpack действуют по-разному в этих случаях.Я ожидаю, что второй пример также должен получать предупреждения и ошибки.Я хочу, чтобы пользователь API не работал во время компиляции, а не во время выполнения.Но, используя второй метод, который я предоставил выше, пользователь API обманет компилятор, но потерпит неудачу во время выполнения.

Есть ли параметр tsconfig для обработки этого случая?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...