Size: a a a

Next.js — русскоговорящее сообщество

2020 April 11

Ф

Федор in Next.js — русскоговорящее сообщество
но получаю странное:
export const useFieldChange: (props: Props) => void = ({ onChange, variant }) => {
 return React.useCallback(
   (e: React.ChangeEvent<HTMLInputElement>) => {
     if (!onChange) {
       return;
     }
     const field = e.target.name;
     const value = e.target.value;
     switch (variant) {
       case "number":
         return onChange(field, Number(value)); // <- Argument of type 'number' is not assignable to parameter of type 'never'
       case "string":
         return onChange && onChange(field, value);
     }
   },
   [onChange, variant]
 );
};
источник

Ф

Федор in Next.js — русскоговорящее сообщество
не могу понять, почему там never :-( В гугле только про массивы с необъявленным типом нахожу, но здесь же типы все прописаны
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
Федор
не могу понять, почему там never :-( В гугле только про массивы с необъявленным типом нахожу, но здесь же типы все прописаны
interface NumberProps {
 variant: 'number';
 onChange?: (field: string, value: number) => void;
}

interface StringProps {
 variant: 'string';
 onChange?: (field: string, value: string) => void;
}

type P = NumberProps | StringProps;

export const useFieldChange = (p: P) => {
 return React.useCallback(
   (e: React.ChangeEvent<HTMLInputElement>) => {
     if (!p.onChange) {
       return;
     }

     const field = e.target.name;
     const value = e.target.value;

     switch (p.variant) {
       case 'number':
         return p.onChange(field, Number(value)); // <- Argument of type 'number' is not assignable to parameter of type 'never'
       case 'string':
         return p.onChange(field, value);
     }
   },
   [p]
 );
};
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
так работает
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
тип useFieldChange не обязательно менять
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
главное не делать деструктуризацию
источник

Ф

Федор in Next.js — русскоговорящее сообщество
Eugene M
главное не делать деструктуризацию
Спасибо! Не совсем, правда, понимаю почему так. Я неправильно понимаю деструктуризацию, или typescript так просто не умеет
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
Не умеет
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
Ну или не всегда, как видишь
источник

Ф

Федор in Next.js — русскоговорящее сообщество
Принял, ещё раз спасибо :-)
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
Решал такую же проблему в редюсере, когда разые экшены приодят
источник

Ф

Федор in Next.js — русскоговорящее сообщество
Ага, сейчас вспомнил что там оно так же себя ведёт, нельзя {type, payload}: SomeUnionAction сделать
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
да-да
источник

Ф

Федор in Next.js — русскоговорящее сообщество
Но там догадался попробовал без, а тут не дошло
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
и вообще мне кажется туда лучше прокидывать агрументы отдельно, а не в объекте
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
зависит конечно как ты обект прокидываешь, но если ты его каждый раз создаешь, оно не будет работать
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
это у меня еслинт пофиксил на [p] в зависимостях, может лучше будет если [p.onchange, p.variant]
источник

EM

Eugene M in Next.js — русскоговорящее сообщество
опять таки, если p.onchange по ссылке) а не каждый раз новый
источник

G

Github Releases Notify Bot in Next.js — русскоговорящее сообщество
zeit/next.js
Pre-release v9.3.5-canary.8
### Patches

- Externalize next-server from Server Builds: #11819

### Credits

Huge thanks to @Timer for helping!
источник
2020 April 12

V

Valentin in Next.js — русскоговорящее сообщество
Кто то использует standart для линтера и husky?
Достаточно воссоздать у себя такие же изменения: https://github.com/zeit/next.js/pull/29/commits/bf6bdbac9c415371d6ad9db40b4cfddf843edda9
решаю проблема линтера проекта на нексте
источник