Как сохранить типы TypeScript СУХИМ - PullRequest
2 голосов
/ 04 июня 2019

Я начал использовать TypeScript в своем приложении React, но обнаружил, что повторяюсь, особенно с моими mapDispatchToProps функциями. Есть ли лучший способ объявить типы?

У меня такое чувство, что я могу получить доступ к типам функций в интерфейсе this state, который используется в асинхронной функции, однако я недостаточно знаю о TS и не могу найти конкретный ответ к этому где угодно.

index.tsx

import { globalDispatchKeyData } from '../actions.tsx'
import { doSomething } from './services'

class Index extends Component {
  // I declare it here
  globalDispatchKeyData: (key: string, data: {}) => void

  constructor(props: any) {
    this.globalDispatchKeyData = this.props.globalDispatchKeyData.bind(this)
    this.doSomething = doSomething.bind(this)


    ...
  ...
}

const mapDispatchToProps = { globalDispatchKeyData }

services.tsx

interface IndexState {
  // I also declare it here
  globalDispatchKeyData: (key: string, data: {}) => void
}

export async function doSomething(this: IndexState) {
   globalDispatchKeyData('TYPE', {})
}

В настоящее время это единственный способ объявления типов для функций диспетчеризации или я что-то упустил?

Заранее спасибо за помощь!

1 Ответ

2 голосов
/ 04 июня 2019

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

type DispatchKeyDataFn = (key: string, data: {}) => void

// Usage
globalDispatchKeyData: DispatchKeyDataFn

Псевдонимы типов чрезвычайно гибки и могут использоваться для создания объединений, пересечений и многих других вещей, как описано здесь

https://www.typescriptlang.org/docs/handbook/advanced-types.html (по направлению к нижней половине)

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