Как правильно определить тип функции es6? - PullRequest
0 голосов
/ 21 октября 2019

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

, поэтому для согласованности

это правильный способ (рекомендуемый или действительный) для установки определения типа метода стрелки es6, особенно когда деструктуризация объекта входит в картину

, поэтому мой первый вопрос: как правильно определить (или установить, чтоон вызывается) тип функции

  1. запись сразу после имени функции, до =
    const method: MethodType = (state:AlphaState , action: AlphaAction) => {
    return data;
}
после перечисления параметров, как раз перед =>
    const method  = (state:AlphaState , action: AlphaAction): MethodType => ({

    })


Теперь вторая часть моего вопроса - если мы используем деструктуризацию объекта в параметре, тогда он становится более сложным.

Куда записывать тип параметров и могут ли они конфликтовать с типизацией параметров и сигнатурой при наборе функций?

Так что в случае с объектом

запись против каждого свойства объекта параметра, перед каждым ,
     const appMethod: MethodType = ({state:AppState , action: AppAction}) => ({
     }
после списка параметров, отдельный список типов с тем же порядком типов после деструктуризации, т.е. после первого закрытия }
    const appMethod: MethodType = ({state , action}:{AppState, AppAction}) => {}

Также приветствуется любой другой или рекомендуемый стиль для обработки этого.

1 Ответ

1 голос
/ 21 октября 2019

Чтобы остаться коротким:

  1. MethodType является типом переменной method. Фактически, тип функции.

  2. MethodType является типом возвращаемого значения функции стрелки. Так что это не сравнимо с 1, оно отличается.

  3. Это деструктуризация объекта, не имеет ничего общего с машинописью: вы деструктурируете поля до AppState и AppAction локальных переменных.

  4. Это недопустимый синтаксис

3 & 4 будет записано как

const appMethod: MethodType = ({ state, action }: { state: AppState, action: AppAction }) => ({});
...